簡體   English   中英

如何在多個片段中為一個微調器添加OnItemSelectedListener

[英]How to add OnItemSelectedListener for one Spinner in multiple Fragments

在我的ActionBarActivity我將ViewPager用於不同的Fragment 我在SupportActionBar使用Spinner填充ViewPager的片段。

如果我只在一個Fragment編寫此代碼,則該應用程序將按預期工作。 但是,如果我也在第二個Fragment中添加相同的方法,則不再調用第一個FragmentOnItemSelectedListener

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Spinner spinner = (Spinner) ((ActionBarActivity) getActivity()).getSupportActionBar().getCustomView().findViewById(R.id.actionbar_spinner_names);
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            onContentChanged(position);
        }

是否有可能分享setOnItemSelectedListener的的MenuItem amonst不同Fragment S' 還是有更好的方法可以在我的Application的Fragment之間共享對ActionBarSpinner的選擇?

編輯:我有兩個FragmentTabLayout Spinner用於查詢以過濾兩個Fragment的結果。 我想在用戶做出選擇后立即更新兩個Fragments 但是我不能在兩個FragmentOnItemSelectedListener注冊。 希望這可以使它更加清晰。 可惜我還不能上傳圖片。

您只能為Spinner設置一個Listener Spinner 如果承載片段的Activity可以訪問它們,則可以實現所需的功能。

您可以在Activity中創建一個嵌套類,該類托管ViewPager以及Fragment 使用將Fragment作為參數的自定義構造函數將偵聽Spinner附加到Spinner

class MyListener implements AdapterView.OnItemSelectedListener
{
     Fragment frag1;
     Fragment frag2;

     public MyListener(Fragment f1, Fragment f2)

     {
        frag1 = f1;
        frag2 = f2;
     }

     @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            if (f1 != null)
            {
            }
            ....
        }    
}

然后在您的活動中創建帶有

Spinner spinner = (Spinner) ((ActionBarActivity) getActivity()).getSupportActionBar().getCustomView().findViewById(R.id.actionbar_spinner_names);
spinner.setOnItemSelectedListener(new MyListener(fragment1, fragment2));

這將如何工作以及創建偵聽器的TabLayout將取決於您對TabLayout的實現。

暫無
暫無

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

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