查看寻呼机上下文问题
View Pager context issues
在我的 MainActivity 中,我试图获取位于片段上的控件(微调器)的上下文。我正在使用 FragmentStatePagerAdapter 来管理片段。我的 onCreate() 的最后一行抛出异常,因为 mSpinner 一直返回 null。我用两种不同的方式尝试了这条线,如图所示和:
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");
}
}
}
}
您可以通过这种方式获取您的 Fragment 视图,然后使用 Fragment 的视图使用 findViewById() 查找 Spinner。
试试这个。
View fragment_view = getLayoutInflater().inflate(R.layout.fragment_view, null);
Spinner mSpinner = (Spinner) fragment_view.findViewById(R.id.spinner1);
希望对您有所帮助!
I am trying to get the context of a control (spinner) that is located on a fragment.
这行不通:
mSpinner = (Spinner) findViewById(R.id.spinner1);
因为您的一个片段包含微调器,所以您必须从片段中获取微调器引用,而不是从 activity!
在我的 MainActivity 中,我试图获取位于片段上的控件(微调器)的上下文。我正在使用 FragmentStatePagerAdapter 来管理片段。我的 onCreate() 的最后一行抛出异常,因为 mSpinner 一直返回 null。我用两种不同的方式尝试了这条线,如图所示和:
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");
}
}
}
}
您可以通过这种方式获取您的 Fragment 视图,然后使用 Fragment 的视图使用 findViewById() 查找 Spinner。
试试这个。
View fragment_view = getLayoutInflater().inflate(R.layout.fragment_view, null);
Spinner mSpinner = (Spinner) fragment_view.findViewById(R.id.spinner1);
希望对您有所帮助!
I am trying to get the context of a control (spinner) that is located on a fragment.
这行不通:
mSpinner = (Spinner) findViewById(R.id.spinner1);
因为您的一个片段包含微调器,所以您必须从片段中获取微调器引用,而不是从 activity!