Я добавил значок на панели инструментов меню, который при вращении в течение нескольких секунд выполняет код, который проверяет, доступны ли какие-либо обновления для приложения или нет, и затем анимация останавливается.Раньше все работало хорошо, но я не знаю, что с сегодняшнего утра оно проверяет обновления, но затем вместо остановки анимации происходит сбой приложения со значением ниже logcat.
Process: com.nepalpolice.yummyfood, PID: 3400
java.lang.NullPointerException
at com.nepalpolice.yummyfood.MainActivity.resetUpdating(MainActivity.java:248)
at com.nepalpolice.yummyfood.update.UpdateTask.onPostExecute(UpdateTask.java:37)
at com.nepalpolice.yummyfood.update.UpdateTask.onPostExecute(UpdateTask.java:12)
Ниже приведен метод resetUpdating из Mainactivity
public void resetUpdating() {
// Get our refresh item from the menu
MenuItem m = mymenu.findItem(R.id.action_refresh);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
if (m.getActionView() != null) {
// Remove the animation.
m.getActionView().clearAnimation();
m.setActionView(null);
}
}
}
Класс обновленной задачи
public class UpdateTask extends AsyncTask<Void, Void, Void> {
private Context mCon;
public UpdateTask(Context con)
{
mCon = con;
}
@Override
protected Void doInBackground(Void... nope) {
try {
// Set a time to simulate a long update process.
Thread.sleep(4000);
return null;
} catch (Exception e) {
return null;
}
}
@Override
protected void onPostExecute(Void nope) {
((MainActivity) mCon).resetUpdating();
}
}
Класс UpdateSErvice
public class UpdateService extends Service {
public UpdateService() {
}
@Override
public int onStartCommand(Intent intent, int flags, int startId){
RequestQueue queue = Volley.newRequestQueue(getApplicationContext());
String url = "http://updatesagar.blogspot.com/2018/06/msc.html";
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if(response != null ) {
boolean resp = response.contains("<div class='post-body entry-content' id='post-body-4386558807662471459' itemprop='description articleBody'>\n" +
"<div dir=\"ltr\" style=\"text-align: left;\" trbidi=\"on\">\n" +
"11</div>\n" +
"<div style='clear: both;'></div>");
if (!resp) {
Intent intent1 = new Intent(UpdateService.this, UpdateDialog.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent1);
} else {
Toast.makeText(getBaseContext(), "No updates Availaible", Toast.LENGTH_SHORT).show();
}
}
}
}, new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError volleyError) {
volleyError.printStackTrace();
}
});
queue.add(stringRequest);
return Service.START_NOT_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
}
Дайте мне знать, если требуется дополнительная информация.Заранее спасибо.