تحطم التطبيق بعد تلقي مكالمة هاتفية أو مثل هذه الانقطاعات

StackOverflow https://stackoverflow.com/questions/4057648

سؤال

بعد أن أتلقى مكالمة هاتفية أو إجراء واحدة ، (وغيرها من الانقطاعات غير الموثقة) ، يحصل طلبي 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top