2013-01-10 55 views
1

這是我的問題,我確定它是一個基本問題。自從我編程2年以來,請耐心等待。如何保持操作欄按鈕在不同活動中的點擊一致。 (Android)

我在我的MainActivity類中創建了一個操作欄。在我的onOptionsItemsSelected(主菜單)方法中,我有一個switch語句,它根據可用的操作項的用戶輸入告訴MainActivity要啓動哪個活動。我有興趣讓Action Bar在用戶選擇選擇時在所有活動中保持一致的行爲。菜單項保持不變,我希望onOptionsItemsSelected在所有活動中都是相同的。我可以從MainActivity複製和粘貼代碼,但我知道這不是「正確」的方式。

例如: 在MainActivity操作欄中給出選項A,B,C。活動A,B或C在用戶選擇時開始。

如果用戶選擇A,則A開始。我希望用戶能夠使用操作欄來啓動B,C或主屏幕。

我知道這有一個基本的解決方案,但它已經有一段時間,因爲我已經編碼。所有的幫助都很順利。由於我的問題的簡單性,請隨意嗤之以鼻:)

回答

0

我想出了答案,它歸結爲基本編程。請讓我知道這是否足夠清楚。

因此,關於Android編程格式有幾點需要了解。從MainActivity()開始,它會按順序調用兩個函數:

OnCreateOptionsMenu(Item item)調用要放入菜單/操作欄中的值。 OnOptionsItemsSelected(Item item)告訴應用程序如何處理選擇。

如果您希望在每個不同視圖中保持操作欄的一致性,那麼在調用OnOptionsItemsSelected()的每個活動中,您都有從選擇中獲取id的方法,然後使用super.OnOptionsItemsSelected (項目)。爲了這個工作,用戶應該讓調用類擴展MainActivity而不是Activity。下面是一個代碼示例:

這是第二個活動的代碼,它想要保持MainActivity所具有的相同行爲操作欄(具有相同的選項)。注意:如果你不擴展MainActivity,它將無法工作,因爲它會從Activity類調用方法,而不是MainActivity。

public class secondActivity extends MainActivity{ 

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

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle item selection 
     item.getItemId(); 
    return super.onOptionsItemSelected(item); 
    } 

} 
相關問題