Android 片段 - getActivity().runOnUiThread returns 重启应用时为空
Android Fragment - getActivity().runOnUiThread returns null when restarting app
当我第一次启动应用程序时,下面的代码工作正常。但是当离开应用程序并再次打开它时,我收到一条错误消息 getActivity() returns null.
我正在片段中执行此代码:
(getActivity()).runOnUiThread(new Runnable() {
@Override
public void run() {
enableMenu();
openMenu();
navigateToFragment(new BlankFragment());
}
});
怎么办?
如何获得 Activity?
创建 Activity 的对象并将其分配给 onAttach 方法,如下所示。
有时 getActivity 给出 null 所以它是在 onAttach 中创建 activity 实例并使用该实例的更好方法。
private Activity mActivity;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mActivity = activity;
}
现在使用此对象代替 getActivity()
onAttach(Activity activity) 方法现已弃用。
你应该使用这个:
@Override
public void onAttach(Context context) {
super.onAttach(context);
activity = getActivity();
}
当我第一次启动应用程序时,下面的代码工作正常。但是当离开应用程序并再次打开它时,我收到一条错误消息 getActivity() returns null.
我正在片段中执行此代码:
(getActivity()).runOnUiThread(new Runnable() {
@Override
public void run() {
enableMenu();
openMenu();
navigateToFragment(new BlankFragment());
}
});
怎么办?
如何获得 Activity?
创建 Activity 的对象并将其分配给 onAttach 方法,如下所示。 有时 getActivity 给出 null 所以它是在 onAttach 中创建 activity 实例并使用该实例的更好方法。
private Activity mActivity;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mActivity = activity;
}
现在使用此对象代替 getActivity()
onAttach(Activity activity) 方法现已弃用。 你应该使用这个:
@Override
public void onAttach(Context context) {
super.onAttach(context);
activity = getActivity();
}