标签: android android-context
@Override public void setTitle(CharSequence title) { mTitle = title; getSupportActionBar().setTitle(mTitle); }
在我的片段中我称之为方法:
public void setData(){ new MyAsincTask(getActivity()){ @Override protected void onPreExecute() { } @Override protected void onPostExecute(Document document) { super.onPostExecute(document); ........ getActivity().setTitle("Сотрудники(city:" + city + ",holiday:" + holiday + ")"); } }.execute(link); }
它有效。但如果在此过程中移动到应用程序的另一部分崩溃
但是如果你添加
if (getActivity()!=null) getActivity().setTitle("Сотрудники(city:" + city + ",holiday:" + holiday + ")");
12-24 05:18:28.805 460-460/com.managment.pavel.managmentgradle E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.NullPointerException at com.managment.pavel.managmentgradle.fragments.EmployeessList$1.onPostExecute(EmployeessList.java:114) at com.managment.pavel.managmentgradle.fragments.EmployeessList$1.onPostExecute(EmployeessList.java:69) at android.os.AsyncTask.finish(AsyncTask.java:417) at android.os.AsyncTask.access$300(AsyncTask.java:127) at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:130) at android.app.ActivityThread.main(ActivityThread.java:3683) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:2)
当您导航到应用程序的另一部分时,片段已分离,因此getActivity将返回null。由于更改已销毁的活动的标题没有意义,因此可以像以前一样进行空检查。
但是,如果您的异步任务必须回调该活动,这可能会成为一个更大的问题。我建议使用像Otto这样的事件总线将数据从异步任务传递回UI。
以下是关于此主题的博文:Event Bus Usage on Android