2015-05-13 20 views
0

在一個類中,我充氣操作欄找到一個項目,然後返回super.oncreatemenuoptions(菜單),然後在另一個類中,我只是使用menu.finditem ...在onCreateMenuOptions方法沒有膨脹,因爲當我再次充氣時其中兩個項目已創建。它在Api 15和16上工作正常,但是當我嘗試使用第二個類中的項目時,android 4.2.2會拋出一個空指針異常。它墜毀的手機是三星Galaxy S4。三星有沒有固件問題?無論如何,通過檢查我的代碼中的API來解決這個問題嗎? 第1類:onCreateMenuOptions對較新的Apis有所不同?

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
Menuinflater inflater= getMenuInflater(); 
inflated.inflate (R.menu.actionbar, menu); 
MenuItem item= menu.findItem(R.id.search); 
return super.onCreateOptionsMenu(menu); 

2類:

@Override 
public void onCreateOptionsMenu (Menu menu,MenuInflater inflater) { 
SearchView SearchView = (SearchView) menu.findItem (R.id.search).getActionView(); 
} 
+0

能否請您提供您的代碼,它會很容易地幫助您 – IgorB

回答

0

我修改了菜單文件夾xml中的搜索視圖android:showAsAction,從「ifroom」更改爲「always」。同時將searchView.setOnQueryTextListener(this)從onCreateView移動到onCreateOptionsMenu,但現在當我這樣做時,它不會在較舊的設備上工作,反之亦然,當我將它移回時...我認爲這是api 19或更新的apis或者其他的東西。

0

您可以務實之內你的代碼通過此行獲得設備的SDK內部版本值。 「Integer.valueOf(android.os.Build.VERSION.SDK);」 ,你可以通過這一行獲得版本編譯權限。 「String androidOS = Build.VERSION.RELEASE;」 但是,我不明白你爲什麼需要知道該版本。 我認爲問題出在您的Sdk.Try使用更新的SDK和更新的IDE.Or嘗試創建一個新項目並複製該新項目中的所有類。 我希望這會幫助你。

+0

哪個要求使用? –

+0

Sdk我的意思是自動更正 –

+0

你必須爲每個類中的操作欄充氣。問題在別的地方。你可以給我看菜單文件「actionbar.xml」嗎? –