2016-09-18 64 views
1

在菜单充气在我的应用程序中,我有一个工具栏,在我的MainActivity中工作得很好。工具栏给出的致命错误在意图/ AppCompatActivity

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:id="@+id/toolbar" 
android:background="@color/colorPrimary" 
android:minHeight="?attr/actionBarSize" 
app:theme="@style/Base.ThemeOverlay.AppCompat.Dark.ActionBar"> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/toolbar_item_counter" 
     android:id="@+id/toolbar_tv_itemCounter" 
     android:textSize="18dp" 
     android:textColor="#ffffff" 
     android:textStyle="bold"/> 
</RelativeLayout> 

但是当我尝试膨胀此菜单

<?xml version="1.0" encoding="utf-8"?> 
<menu 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:id="@+id/item_accept" 
    android:title="Accept" 
    android:icon="@drawable/ic_action_accept" 
    app:showAsAction="always"/> 
</menu> 

有了这个代码

public class AddActivity extends AppCompatActivity { 

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

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    toolbar.inflateMenu(R.menu.menu_input_accept); 

    TextView toolbartext = (TextView) findViewById(R.id.toolbar_tv_itemCounter); 
    toolbartext.setVisibility(View.INVISIBLE); 

} 

}

它给了我这个

所致:显示java.lang.NullPointerException:尝试上的空对象引用

致命错误调用虚拟方法 '无效android.support.v7.widget.Toolbar.inflateMenu(INT)',其我不明白。我也尝试覆盖onCreateOptionsMenu方法,并像我在MainActivity中那样使用MenuInflater,但它不会改变任何内容。我包括我的工具栏上的XML就像我在我的主要活动做了:

<include layout="@layout/toolbar_layout" android:id="@+id/include" />

回答

1

我包括我在XML就像我在我的主要活动做了工具栏:

<include layout="@layout/toolbar_layout" 
    android:id="@+id/include" /> 

当你包含一个布局时,如果你为include标签提供了一个id(就像你所做的那样,使用android:id =“@ + id/include”),那么包含的布局的根就会有该id,覆盖任何ID已分配在包含的布局内编辑。所以在你的情况下,工具栏的ID为R.id.include而不是R.id.toolbar。

要么删除机器人:ID = “@ + ID /包括”,将其更改为机器人:ID = “@ + ID /工具栏”或寻找使用findViewById工具栏(R.id.include )

+1

我看到它自己像1秒前,但无论如何谢谢你xd那facepalm我很生气^^ – creativecreatorormaybenot