【发布时间】:2018-02-03 01:49:58
【问题描述】:
我在尝试检查片段是否已创建时收到此错误。
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“boolean android.app.Fragment.isAdded()”
这是代码,在活动中:
private HomeFragment homeFragment;
private BookingFragment bookingFragment;
private MainSettlement mainSettlement;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_booking);
// ....
if(savedInstanceState == null) {
homeFragment = HomeFragment.newInstance("HOME");
bookingFragment = BookingFragment.newInstance("Booking");
mainSettlement = MainSettlement.newInstance("Settlement");
} //.... rest of the code
protected void displayFragmentHome() {
FragmentTransaction ft = getFragmentManager().beginTransaction();
if (homeFragment.isAdded()) { // if the fragment is already in container
ft.show(homeFragment);
} else { // fragment needs to be added to frame container
ft.add(R.id.BookingLayout, homeFragment, "HOME");
}
if (bookingFragment.isAdded()) { ft.hide(bookingFragment); }
if (mainSettlement.isAdded()) { ft.hide(mainSettlement); }
ft.commit();
}
在片段类中
public static HomeFragment newInstance(String title) {
HomeFragment homeFragment = new HomeFragment();
Bundle args = new Bundle();
args.putString("Home", title);
homeFragment.setArguments(args);
return homeFragment;
}
编辑 堆栈跟踪
08-25 11:36:11.424 25266-25266/com.tmerchant.tmerchant E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.tmerchant.tmerchant, PID: 25266
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tmerchant.tmerchant/com.tmerchant.tmerchant.BookingActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.app.Fragment.isAdded()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2683)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2744)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1493)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6195)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:874)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:764)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.app.Fragment.isAdded()' on a null object reference
at com.tmerchant.tmerchant.BookingActivity.displayFragmentHome(BookingActivity.java:212)
at com.tmerchant.tmerchant.BookingActivity.selectFragment(BookingActivity.java:135)
at com.tmerchant.tmerchant.BookingActivity.setUpNavigationView(BookingActivity.java:114)
at com.tmerchant.tmerchant.BookingActivity.onCreate(BookingActivity.java:54)
at android.app.Activity.performCreate(Activity.java:6736)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2636)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2744)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1493)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6195)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:874)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:764)
08-25 11:36:11.454 25266-25266/com.tmerchant.tmerchant E/MQSEventManagerDelegate:获取 MQSService 失败。
编辑 单击底部导航视图时,我正在调用 displayFragmentHome
protected void selectFragment(MenuItem item){
item.setChecked(true);
switch(item.getItemId()){
case R.id.home:
title = "Home";
if (TAG_CURRENT != TAG_HOME) {
displayFragmentHome();
TAG_CURRENT = TAG_HOME; }
break; // rest of the code
【问题讨论】:
-
你能添加堆栈跟踪吗?
-
你在哪里打电话
displayFragmentHome? -
@Nidhi257 已编辑
-
@Fred 我将它用于底部导航
-
我要做的基本上是隐藏和显示片段,我正在尝试关注这个github.com/codepath/android_guides/wiki/…
标签: android android-fragments nullpointerexception runtime-error