2016-09-18 57 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