تحطم التطبيق بعد تلقي مكالمة هاتفية أو مثل هذه الانقطاعات
-
27-09-2019 - |
سؤال
بعد أن أتلقى مكالمة هاتفية أو إجراء واحدة ، (وغيرها من الانقطاعات غير الموثقة) ، يحصل طلبي nullpointerxception عند استئناف نشاطي. هل يمكن لأي شرح لي أين هو و/أو كيفية إصلاحه؟
لقد كتبت الرمز كما هو موضح أدناه:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.displayActivity);
new performBackgroundTask().execute();
}
@Override
public void onDestroy()
{
listview1.setAdapter(null);
super.onDestroy();
}
private class performBackgroundTask extends AsyncTask <Void, Void, Void>
{
private ProgressDialog Dialog = new ProgressDialog(displayActivity.this);
protected void onPreExecute()
{
Dialog.setMessage(getString(R.string.dialog_wait_message));
Dialog.show();
}
protected void onPostExecute(Void unused)
{
Dialog.dismiss();
// displaying all the fetched data
}
@Override
protected Void doInBackground(Void... params)
{
// fetching data from web using HTTPGet method
return null;
}
}
إخراج logcat هو:
java.lang.runtimeexception: غير قادر على تدمير النشاط {myapplication/myapplication.displayActivity}: java.lang.nullpointerexception في Android.App.Activitythread.performDestroyActivity (Activitythread.java:3655) at Android.App : 3673) في Android.App.ActivityThereAd.HandlerLaUnchActivity (ActivityThread.java:3789) في Android.App.ActivityThereD.Access $ 2400 (Activitythread.java:125) في Android.App.Activitythread $ H.H.HandleMessage (Activitythread.java:2037 ) في Android.Os.Handler.DispatchMessage (Handler.Java:99) في Android.Os.Looper.loop (looper.java:123) في Android.App.Activitythread.main (Activitythread.java:4627) في java.lang .reflect.method.invokenative (الطريقة الأصلية) في java.lang.reflect.method.invoke (method.java:521) في com.android.internal.os.zygoteinit $ methondargscaller.run (zygoteinit.java:868) at com .android.internal.os.zygoteinit.main (zygoteinit.java:626) في dalvik.system.nativestart.main (الطريقة الأصلية) الناجم عن: java.lang.nullpoin terexception في myapplication.displayactivity.ondestroy (displayActivity.java:74) في Android.app.Activitythread.performDestroyActivity (Activitythread.java:3642)
الآن ، الرجاء مساعدتي في إصلاح هذه المشكلة ، كيف يمكنني التعامل مع المكالمة الهاتفية أو الرسائل القصيرة المستلمة أو مثل هذا النوع من الانقطاعات؟
المحلول
الخطوة رقم 1: العثور على السطر 74 من displayActivity.java
ملف.
الخطوة رقم 2: إصلاح أي مشكلة على الخط 74.
الآن ، يشير تتبع المكدس إلى أن الخط 74 موجود onDestroy()
. على افتراض أن رمز النشاط الذي أدرجته أعلاه هو من displayActivity
, ، ثم يجب أن يكون السطر 74:
listview1.setAdapter(null);
هذا يعني listview1
هو null
. أنت لا تعلن أو تخصيص قيمة لعضو البيانات هذا في الرمز الذي أدرجته أعلاه.
نصائح أخرى
حاول تعيين BP في السطر الأول من onDestroy
والتحقق من صحة VARS/الأعضاء للعثور على أي واحد هو null