В моей MainActivity я пытаюсь получить контекст элемента управления (прядильника), который находится на фрагменте. Я использую FragmentStatePagerAdapter для управления фрагментами. Последняя строка моего onCreate() выдает исключение, потому что mSpinner возвращает null. Ive пытался эту линию два различных способа, как показано на рисунке и:View Проблемы с контекстом пейджера
mSpinner = (Spinner) mVP.findViewById(R.id.spinner1);
Я предполагаю, что мой контекст неверен, но не имеют опыта, чтобы знать, как исправить, не слепо гадать. Спасибо за любую конструктивную помощь, которую вы можете предложить заранее! :)
Мой код выглядит следующим образом:
public class MainActivity extends FragmentActivity {
MyAdapter mAdapter;
ViewPager mVP;
Spinner mSpinner;
Spinner.OnItemSelectedListener onSpinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAdapter = new MyAdapter(getSupportFragmentManager());
mVP = (ViewPager) findViewById(R.id.viewPager);
mVP.setAdapter(mAdapter);
mSpinner = (Spinner) findViewById(R.id.spinner1);
}
public static class MyAdapter extends FragmentStatePagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return 5;
}
@Override
public Fragment getItem(int pos) {
switch (pos) {
case 0:return FirstFragment.newInstance("FirstFragment, Instance 1");
case 1:return SecondFragment.newInstance("SecondFragment, Instance 1");
case 2:return ThirdFragment.newInstance("ThirdFragment, Instance 1");
case 3:return ThirdFragment.newInstance("ThirdFragment, Instance 2");
case 4:return ThirdFragment.newInstance("ThirdFragment, Instance 3");
default:return ThirdFragment.newInstance("ThirdFragment, Default");
}
}
}
}
где ваш логарифм? –
это очевидно! u не могу получить доступ к компонентам фрагментов, которые обрабатываются адаптером, здесь в действии .. этот способ. для обходного пути. Независимо от того, что вы хотите сделать с помощью spinner..implement onpagechangeListener и вызвать getadapter.getview.findViewbyid (id) и делать то, что вы хотите делать. Хотя это уродливое обходное решение! –