Android Fragment-getActivity().runOnUiThread在重新启动应用程序时返回null
当我第一次启动应用程序时,下面的代码工作正常。但是,当离开应用程序并再次打开它时,我会看到一个错误,即Android Fragment-getActivity().runOnUiThread在重新启动应用程序时返回null,android,android-activity,android-fragmentactivity,Android,Android Activity,Android Fragmentactivity,当我第一次启动应用程序时,下面的代码工作正常。但是,当离开应用程序并再次打开它时,我会看到一个错误,即getActivity()返回null。 我在一个片段中编写这段代码: (getActivity()).runOnUiThread(new Runnable() { @Override public void run() { enableMenu(); openMenu
getActivity()返回null。
我在一个片段中编写这段代码:
(getActivity()).runOnUiThread(new Runnable() {
@Override
public void run() {
enableMenu();
openMenu();
navigateToFragment(new BlankFragment());
}
});
怎么办
如何获取活动?创建活动对象,并在下面的onAttach方法上分配该对象。 有时getActivity会给出null,所以在onAttach中创建活动实例并使用该实例是一种更好的方法
private Activity mActivity;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mActivity = activity;
}
现在使用这个对象而不是
getActivity()
创建活动对象,并在下面的onAttach方法上分配它。
有时getActivity会给出null,所以在onAttach中创建活动实例并使用该实例是一种更好的方法
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();
}
onAttach(活动)方法现在已被弃用。
你应该使用这个:
@Override
public void onAttach(Context context) {
super.onAttach(context);
activity = getActivity();
}
你搜索了吗,试试这个你搜索了吗,试试这个答案没有意义<如果他在现在所在的时间/地点调用代码,则代码>活动性将为空。。。显然,他只需要移动
getActivity()
调用片段生命周期中不返回null的位置/时间…@Selvin这里发生的是当您的片段第一次调用时,它被附加到活动上,所以工作正常,但是当片段被分离时,它的getActivity
也会随着片段被分离而变为null,所以当您以后遇到相同的片段时该片段getActivity
返回null,但由于片段已分离,现在将调用fragments-onAttached方法,因此您可以从那里获取新的Activity对象。而且它像魅力一样工作!!!当片段被分离@Selvin时,我只是说在调用该方法之后,活动将在OnAttached方法中可用。请注意:如果在片段中需要上下文对象,可以调用getActivity()。但是,请注意仅当片段附加到活动时才调用getActivity()。当片段尚未附加或在其生命周期结束时被分离时,getActivity()将返回null。在开发者博客上写下,如果你有任何合适的解决方案,它将被推荐please@Selvin:我知道这是一篇很老的文章,但是如果我想开始一个新的活动,我怎么能在片段中“不使用”父活动呢?在本例中,我在调用newintent(getActivity(),newActivity.class)时得到了NPE;这个答案没有道理<如果他在现在所在的时间/地点调用代码,则代码>活动性将为空。。。显然,他只需要移动getActivity()
调用片段生命周期中不返回null的位置/时间…@Selvin这里发生的是当您的片段第一次调用时,它被附加到活动上,所以工作正常,但是当片段被分离时,它的getActivity
也会随着片段被分离而变为null,所以当您以后遇到相同的片段时该片段getActivity
返回null,但由于片段已分离,现在将调用fragments-onAttached方法,因此您可以从那里获取新的Activity对象。而且它像魅力一样工作!!!当片段被分离@Selvin时,我只是说在调用该方法之后,活动将在OnAttached方法中可用。请注意:如果在片段中需要上下文对象,可以调用getActivity()。但是,请注意仅当片段附加到活动时才调用getActivity()。当片段尚未附加或在其生命周期结束时被分离时,getActivity()将返回null。在开发者博客上写下,如果你有任何合适的解决方案,它将被推荐please@Selvin:我知道这是一篇很老的文章,但是如果我想开始一个新的活动,我怎么能在片段中“不使用”父活动呢?在本例中,我在调用newintent(getActivity(),newActivity.class)时得到了NPE;