如何让工具栏不为空?

时间:2016-05-11 11:42:11

标签: android login toolbar

我的应用程序有两个活动,主要的一个是运行良好但是在打开登录时它会崩溃并出现以下错误:

  

java.lang.NullPointerException:尝试在空对象引用上调用虚方法'void android.support.v7.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)'

这是我的代码片段引用工具栏(它基本上是登录活动+我要添加的工具栏):

public class LoginActivity extends AppCompatActivity implements LoaderCallbacks<Cursor> {
  Toolbar toolbar;    

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    toolbar.inflateMenu(R.menu.mainmenu);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

工具栏和菜单在我的主要活动中运作良好。工具栏也在登录活动的XML布局中。

2 个答案:

答案 0 :(得分:0)

setSupportActionBar(toolbar);

之前致电getSupportActionBar().setDisplayHomeAsUpEnabled(true);

答案 1 :(得分:0)

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference... 

这个NPE贴心你首先设置工具栏

您没有设置工具栏..首先设置它... 这样做......

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    toolbar = (Toolbar) findViewById(R.id.toolbar);
   // toolbar.inflateMenu(R.menu.mainmenu);
    setSupportActionBar(toolbar)
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

您不需要使用toolbar.inflateMenu(),因为工具栏充当您的ActionBar。只有当您将工具栏用作独立窗口小部件时,才需要调用toolbar.inflateMenu()。您可以使用以下代码行处理菜单项单击事件...

toolbar.setOnMenuItemClickListener(
        new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                // Handle menu item click event here
                return true;
            }
});

希望这会对你有所帮助