![](/img/trans.png)
[英]Android Multiple Spinner with OnItemSelectedListener
[英]How to add OnItemSelectedListener for one Spinner in multiple Fragments
在我的ActionBarActivity
我將ViewPager
用於不同的Fragment
。 我在SupportActionBar
使用Spinner
填充ViewPager
的片段。
如果我只在一個Fragment
編寫此代碼,則該應用程序將按預期工作。 但是,如果我也在第二個Fragment中添加相同的方法,則不再調用第一個Fragment
的OnItemSelectedListener
。
@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
的選擇?
編輯:我有兩個Fragment
的TabLayout
。 Spinner
用於查詢以過濾兩個Fragment
的結果。 我想在用戶做出選擇后立即更新兩個Fragments
。 但是我不能在兩個Fragment
的OnItemSelectedListener
注冊。 希望這可以使它更加清晰。 可惜我還不能上傳圖片。
您只能為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.