我在试着把行动栏藏在一个片段里。为了做到这一点,我尝试使用getActivity().getActionBar().hide();,但确实抛出了一个异常NullPointerException。我试过使用getSupportActionBar(),但是Eclipse不显示自动完成,它只显示getActionBar();
我该怎么做呢?
片段
public class MyFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActivity().getActionBar().hide(); //nullpointerexception in this line
}
}异常:
12-05 12:19:02.415: E/AndroidRuntime(16400): FATAL EXCEPTION: main
12-05 12:19:02.415: E/AndroidRuntime(16400): java.lang.NullPointerException
12-05 12:19:02.415: E/AndroidRuntime(16400): at br.com.mypackage.myapp.frags.BatalhaSemOponenteFrag.onCreate(BatalhaSemOponenteFrag.java:71)
12-05 12:19:02.415: E/AndroidRuntime(16400): at android.support.v4.app.Fragment.performCreate(Fragment.java:1763)
12-05 12:19:02.415: E/AndroidRuntime(16400): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:913)
12-05 12:19:02.415: E/AndroidRuntime(16400): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
12-05 12:19:02.415: E/AndroidRuntime(16400): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
12-05 12:19:02.415: E/AndroidRuntime(16400): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
12-05 12:19:02.415: E/AndroidRuntime(16400): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:454)
12-05 12:19:02.415: E/AndroidRuntime(16400): at android.os.Handler.handleCallback(Handler.java:730)
12-05 12:19:02.415: E/AndroidRuntime(16400): at android.os.Handler.dispatchMessage(Handler.java:92)
12-05 12:19:02.415: E/AndroidRuntime(16400): at android.os.Looper.loop(Looper.java:176)
12-05 12:19:02.415: E/AndroidRuntime(16400): at android.app.ActivityThread.main(ActivityThread.java:5419)
12-05 12:19:02.415: E/AndroidRuntime(16400): at java.lang.reflect.Method.invokeNative(Native Method)
12-05 12:19:02.415: E/AndroidRuntime(16400): at java.lang.reflect.Method.invoke(Method.java:525)
12-05 12:19:02.415: E/AndroidRuntime(16400): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
12-05 12:19:02.415: E/AndroidRuntime(16400): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
12-05 12:19:02.415: E/AndroidRuntime(16400): at dalvik.system.NativeStart.main(Native Method)发布于 2014-12-05 14:36:02
由于您使用的是v4支持片段,所以我假设您将在您的活动中使用appcompat。
您必须将从getActivity()获得的活动转换为实际的活动,以便将活动识别为appcompat。
试试这个:
public class MyFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((YourActivity)getActivity()).getSupportActionBar().hide();
}
}发布于 2014-12-05 14:35:00
您的最低SDK是什么?您可以将其更改为11,只是为了测试目的。
在您的活动中调用setContentView onCreate吗?
如果使用appcompat,则需要调用getSupportActionbar()。
还可以在调用requestWindowFeature(Window.FEATURE_ACTION_BAR);之前添加setContentView
您是否将Theme.NoTitle或windowActionBar定义为在styles.xml中为false?
检查活动中的ActionBar是否为空。
https://stackoverflow.com/questions/27318013
复制相似问题