使用ListActivity隐藏应用程序标题的例外



我有一个扩展ListActivity的类,我试图使用以下代码隐藏默认的titlebar(我认为它称为actionbar)。它可以进行常规活动,但在ListActivity上不起作用。在这种情况下,我该如何完成?

public class MyClass extends ListActivity{
    @Override
    public void onCreate(Bundle b) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(b);
        // Tried Window.FEATURE_NO_TITLE here as well
        setContentView(R.layout.activity_myclass);
        getActionBar().setDisplayHomeAsUpEnabled(true);
    }
}

结果是NullPoInterException。如果您需要的话,完整的错误堆栈跟踪在这里:http://pastebin.com/vlr5de8m

禁用titltbar,在清单文件中使用此代码,它将为您提供帮助。

<活动android:them ="@android:style/theme.notitlebar.fullscreen">

删除Actionbar:getActionBar()。hide()。另请参阅此答案:如何永久禁用操作栏

如果您使用的是ActionBar,我认为您不应使用requestWindowFeature()。您可以使用以下方式隐藏动作栏标题:

ActionBar actionBar = getActionBar(); 
actionBar.setDisplayShowTitleEnabled(false); 

http://developer.android.com/reference/android/App/actionbar.html#setdisplayshowtitleenabled(boolean)

似乎NullPoInterException由getActionBar()生成。从代码中删除以下行已解决问题。

getActionBar().setDisplayHomeAsUpEnabled(true);

最终(工作)代码:

public class MyClass extends ListActivity{
    @Override
    public void onCreate(Bundle b) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(b);
        setContentView(R.layout.activity_myclass);
     }
}

请注意,在调用super类和setContentView

之前必须调用requestWindowFeature

相关内容

最新更新