ツールバーにスピナーを持つタブ付きアクティビティがあります。私は、スピナーの値が変わるたびに、タブフラグメントの変更をトリガーする必要があります。アクティビティを変更するスピナーリスナー
これまで、cropsSpinnerインスタンスをFragmentから取得して実装しました。しかし、それは必要に応じて動作していない。私はリスナーには新しいです。 Androidコールバックでこれを行う方法はありますか?あなたの追加情報については
ExtensionActivity.java
public class ExtensionActivity extends AppCompatActivity {
private SectionsPageAdapter mSectionsPageAdapter;
@BindView(R.id.container) ViewPager mViewPager;
@BindView(R.id.tabs) TabLayout tabLayout;
@BindView(R.id.toolbar) Toolbar toolbar;
@BindView(R.id.spinner_nav) public Spinner cropsSpinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_extension);
ButterKnife.bind(this);
mSectionsPageAdapter = new SectionsPageAdapter(getFragmentManager());
setupViewPager(mViewPager);
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
tabLayout.setupWithViewPager(mViewPager);
}
private void setupViewPager(ViewPager viewPager){
SectionsPageAdapter adapter = new SectionsPageAdapter(getFragmentManager());
adapter.addFragment(new ExtDescFragment(),"Description");
adapter.addFragment(new ExtLandPFragment(),"Land Preparation");
viewPager.setAdapter(adapter);
}
ExtDescFragment.java
public class ExtDescFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_ext_desc, container, false);
ButterKnife.bind(this,view);
((ExtensionActivity)getActivity()).cropsSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
CROP =((ExtensionActivity)getActivity()).cp.get(position);
Log.e("CROP",CROP);
getCropInf();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
cropperSpinnerの項目を選択したときにonItemSelected()とonNothingSelected()が呼び出されましたか? – nhoxbypass
アイテムが選択されますが、この変更を検出するためにすべてのフラグメントが必要ですので、スピナー値が変更されたときにリスナーを作成してすべてのフラグメントに実装できるかどうか疑問に思っていました –
異なるタブがあり、タブをクリックし、スピナー内のデータを変更する場合は、他のフラグメントにも反映する必要があります。私は正しくなっていますか? –