首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将动作条隐藏在片段中抛出NullPointerException?

将动作条隐藏在片段中抛出NullPointerException?
EN

Stack Overflow用户
提问于 2014-12-05 14:24:14
回答 2查看 1.3K关注 0票数 3

我在试着把行动栏藏在一个片段里。为了做到这一点,我尝试使用getActivity().getActionBar().hide();,但确实抛出了一个异常NullPointerException。我试过使用getSupportActionBar(),但是Eclipse不显示自动完成,它只显示getActionBar();

我该怎么做呢?

片段

代码语言:javascript
复制
public class MyFragment extends Fragment {
@Override
        public void onCreate(Bundle savedInstanceState) {           
            super.onCreate(savedInstanceState); 
            getActivity().getActionBar().hide();  //nullpointerexception in this line       
        }  
}

异常:

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-05 14:36:02

由于您使用的是v4支持片段,所以我假设您将在您的活动中使用appcompat。

您必须将从getActivity()获得的活动转换为实际的活动,以便将活动识别为appcompat。

试试这个:

代码语言:javascript
复制
public class MyFragment extends Fragment {
@Override
    public void onCreate(Bundle savedInstanceState) {           
        super.onCreate(savedInstanceState); 
((YourActivity)getActivity()).getSupportActionBar().hide();
    }  
}
票数 6
EN

Stack Overflow用户

发布于 2014-12-05 14:35:00

您的最低SDK是什么?您可以将其更改为11,只是为了测试目的。

在您的活动中调用setContentView onCreate吗?

如果使用appcompat,则需要调用getSupportActionbar()

还可以在调用requestWindowFeature(Window.FEATURE_ACTION_BAR);之前添加setContentView

您是否将Theme.NoTitlewindowActionBar定义为在styles.xml中为false?

检查活动中的ActionBar是否为空。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27318013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档