簡體   English   中英

將菜單添加到活動中而不是片段

[英]Adding a menu to an activity than a fragment

我有一個MainActivity以及一個片段。 我有一個刷新菜單選項,它將刷新數據(使用AsyncTask )。 在片段中增加刷新菜單選項與在MainActivity中是否有區別?

注意 :這是與Udacity的開發Android應用程序第2課相關的。

是的,如果我理解正確,您想從片段中添加活動工具欄菜單。 如果是這樣,您可以這樣做

Yout Fragment類

   @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(boolean)

如果您在活動中為菜單充氣,它將顯示在活動中加載的所有片段中,但是該操作僅對活動可用(如果您想對菜單操作進行一些常規操作,這很好例如開始新活動,顯示信息彈出窗口等)。 如果您從片段中為菜單充氣,那么您將能夠處理該片段中的菜單項,這將使您能夠基於當前活動的片段來創建更具體的菜單操作。 例如,如果您的Viewpager具有3個不同的片段,則可以說:

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

假設您要允許用戶僅上傳圖像,並且希望該上傳按鈕位於菜單中。

如果您在活動中對菜單進行充氣,則所有片段中都將顯示您的上傳按鈕,您將必須創建一個自定義/邏輯來顯示隱藏的菜單項。 如果您從片段中創建菜單,則可以處理並顯示所需片段的菜單

長話短說,我認為這取決於活動/片段的用例以及您要實現的目標

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM