2016-06-14 26 views
0

我有一個MainActivity以及一個片段。我有刷新菜單選項,將刷新數據(使用AsyncTask)。膨脹片段中的刷新菜單選項比MainActivity有什麼區別嗎?添加菜單到一個活動比片段

注意:這與Udacity的開發Android應用程序背景下,第2課

回答

1

是的,如果我的理解對不對,你想從片段虛增您的活動工具欄菜單。如果是這樣的話,你可以做這樣的

YOUT片段類

@Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      //setHasOptionsMenu is important 
      //it's telling the parent activity that he wants to participate in inflation of the menu 
      setHasOptionsMenu(true); 
     } 



     //Rest of your methods (onCreateView, onPause, onResume etc...) 


     @Override 
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
      //inflate the menu file 
      inflater.inflate(R.menu.your_menu_xml, menu); 
      super.onCreateOptionsMenu(menu, inflater); 
     } 

     @Override 
     public boolean onOptionsItemSelected(android.view.MenuItem item) { 

      switch (item.getItemId()) { 

       case R.id.refresh: 
        //handle click 
        return true; 
      } 
      return super.onOptionsItemSelected(item); 
     } 

您還可以,如果你想隱藏使用setMenuVisibility(布爾) /在某些childfragments

節目菜單

如果您從活動內部充氣菜單,它將顯示在您在活動內部加載的所有片段中,但該動作僅適用於活動(如果您想要t o用你的菜單操作做一些常規的事情,比如開始新的活動,顯示信息彈出等)。如果您從片段內膨脹菜單,您將能夠使用片段處理菜單項,這將允許您根據哪個片段當前處於活動狀態來創建更具體的菜單操作。例如,如果你有3個不同的片段viewpager讓說:

  • FragmentOne用於圖像瀏覽
  • FragmentTwo視頻瀏覽
  • FragmentThre文本瀏覽

比方說,你希望允許用戶僅上載圖像,並且您希望該上傳按鈕位於菜單中。

如果您從活動內充氣菜單,您的上傳按鈕將在所有片段中可見,您將不得不創建用於顯示隱藏菜單項目的自定義/邏輯。如果您從片段內創建菜單,您將能夠處理並顯示您需要的片段的菜單

長話短說我認爲這取決於活動/片段的用例以及您想要的內容實現與它

+0

我欣賞你的答案,但我想知道**什麼**是膨脹MainActivity中的所述菜單之間的差異比在片段(後者是根據課程建議的選項)。 –

+0

@RanjanSrinivas回答編輯 –