2013-05-01 91 views
0

这是由SherlockListFragment(在TabSwipe内)和AsyncTask doInBackground引起的。无法暂停活动 - nullpointerexception

点击一个列表项目开始生成一个大的可分类项目,当完成后,它应该移动到一个新的活动(在TabSwipe容器之外),将该可分类作为一个Bundle传递。

这里是异步代码:

public class BackgroundSetUpReportData extends AsyncTask<Integer, Integer, PainReport_Holder> { 

    // declare the dialog 
    ProgressDialog progressDialog; 

    // show the dialog 
    @Override 
    protected void onPreExecute() { 
     progressDialog = new ProgressDialog(getActivity()); 
     progressDialog.setCancelable(false); 
     progressDialog 
       .setMessage("Building Summary:\nThis may take some time.\nPlease wait..."); 
     progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
     progressDialog.setProgress(0); 
     progressDialog.show(); 
    } 

    @Override 
    protected PainReport_Holder doInBackground(Integer... params) { 

     DataLayer d = new DataLayer(getActivity().getBaseContext()); 

     //lots of adding to the PRH class 
     return PRH; 
    } 

    // update the progress dialog 
    @Override 
    protected void onProgressUpdate(Integer... values) { 
     super.onProgressUpdate(values); 
    } 

    // show the data 
    protected void onPostExecute(PainReport_Holder result) { 
     // hide the dialog 
     progressDialog.dismiss(); 
     moveToActivity(); 
    } 

} 

public void moveToActivity() { 
    Bundle b = new Bundle(); 
    b.putParcelable("SummaryData", PRH); 
    b.putString("fromDate", fromDate); 
    b.putString("toDate", toDate); 
    Intent i = new Intent(getActivity(), my_new.class); 
    i.putExtras(b); 
    startActivity(i); 
} 

总类:

public class myClassFragment extends SherlockListFragment { 

这移到片段之前完美工作,并且仍然工作正常,直到我们得到了startActivity(我)lineTo moveToActivity();它抛出这个错误:传递

数据
05-01 23:41:39.906: E/AndroidRuntime(25684): FATAL EXCEPTION: main 
05-01 23:41:39.906: E/AndroidRuntime(25684): java.lang.RuntimeException: Unable to pause activity {[app]/[app].[class]}: java.lang.NullPointerException 
05-01 23:41:39.906: E/AndroidRuntime(25684): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2358) 
05-01 23:41:39.906: E/AndroidRuntime(25684): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2315) 
05-01 23:41:39.906: E/AndroidRuntime(25684): at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2295) 
05-01 23:41:39.906: E/AndroidRuntime(25684): at android.app.ActivityThread.access$1700(ActivityThread.java:117) 
05-01 23:41:39.906: E/AndroidRuntime(25684): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:942) 
05-01 23:41:39.906: E/AndroidRuntime(25684): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-01 23:41:39.906: E/AndroidRuntime(25684): at android.os.Looper.loop(Looper.java:130) 
05-01 23:41:39.906: E/AndroidRuntime(25684): at android.app.ActivityThread.main(ActivityThread.java:3687) 
05-01 23:41:39.906: E/AndroidRuntime(25684): at java.lang.reflect.Method.invokeNative(Native Method) 
05-01 23:41:39.906: E/AndroidRuntime(25684): at java.lang.reflect.Method.invoke(Method.java:507) 
05-01 23:41:39.906: E/AndroidRuntime(25684): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
05-01 23:41:39.906: E/AndroidRuntime(25684): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
05-01 23:41:39.906: E/AndroidRuntime(25684): at dalvik.system.NativeStart.main(Native Method) 
05-01 23:41:39.906: E/AndroidRuntime(25684): Caused by: java.lang.NullPointerException 
05-01 23:41:39.906: E/AndroidRuntime(25684): at android.support.v4.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManager.java:1576) 
05-01 23:41:39.906: E/AndroidRuntime(25684): at android.support.v4.app.FragmentManagerImpl.saveAllState(FragmentManager.java:1617) 
05-01 23:41:39.906: E/AndroidRuntime(25684): at android.support.v4.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:481) 
05-01 23:41:39.906: E/AndroidRuntime(25684): at android.app.Activity.performSaveInstanceState(Activity.java:1037) 
05-01 23:41:39.906: E/AndroidRuntime(25684): at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1181) 
05-01 23:41:39.906: E/AndroidRuntime(25684): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2340) 
05-01 23:41:39.906: E/AndroidRuntime(25684): ... 12 more 

其他研究我已经做了建议空条目,但我已经检查在调试公屋类,并有内它没有空。

UPDATE

我已经通过的AsyncTask踩线,并出现在被抛出ClassNotFound的异常:

Intent i = new Intent(getActivity(), my_new.class); 

凡 '未发现' 类my_new.class,这肯定存在。事实上,如果我添加

getActivity().finish(); 

startActivity(i); 

那么它工作正常,但通话活动在后面堆栈不再。

澄清;父是

public class myTabsActivity extends TabSwipeActivity { 

TabSwipeActivity是

public abstract class TabSwipeActivity extends SherlockFragmentActivity { 

和我处理这个片段

public class myClassFragment extends SherlockListFragment { 

上午我从片段缺少的器具可能?

+0

你能发布这个活动和片段的完整代码吗? – Gustek 2013-05-02 23:53:33

回答

0

我记得我一次在AsyncTask中获取NLP。 我不记得,如果问题是完全一样的,但是我在onPreExecute

/* ... */ 
Context ctx; 

@Override 
protected void onPreExecute() { 
    /* ... */ 
    ctx = getActivity().getApplicationContext(); 
    /* ... */ 
} 

得到参考应用程序上下文,并使用它需要的不是getActivity其中解决了它()要创建意图。

希望它有帮助。

+0

谢谢,但没有奏效。我做了一些进一步的挖掘,并相应地更新了我的问题。 – DaveSav 2013-05-02 22:45:47

0

我觉得你的问题与getActivity()有关moveToActivity()的方法。也许你应该使用getParent()getSupportFragmentManager()或其他任何东西。 我认为getActivity()使用片段时retuns null。

希望它有帮助!

+0

谢谢,但没有奏效。我做了一些进一步的挖掘,并相应地更新了我的问题。 – DaveSav 2013-05-02 22:45:27