错误片段填充微调 [英] Error populating spinner in a fragment
问题描述
我有两个片段一个活动。其中一人哈瓦好手。当我填充它的应用程序崩溃。
我不知道为什么。在Android开发者很困惑如何片段做到这一点,似乎是diferent像正常的活动。
谢谢!
公共类InstrumentsFrag扩展片段{TextView的TV1;
微调SP;的String [] OS = {蛋糕V1.5,甜甜圈V1.6,泡芙V2.0 / 2.1,升级Froyo V2.2
姜饼V2.2,蜂窝V3.0 / 3.1};
@覆盖
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
捆绑savedInstanceState){ 返回inflater.inflate(R.layout.instruments,集装箱,FALSE);}
@覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState); SP =(微调)getActivity()。findViewById(
R.id.spinner1); ArrayAdapter<&CharSequence的GT;适配器= ArrayAdapter.createFromResource(getActivity(),R.array.sections,android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp.setAdapter(适配器);
}
我在哪里填充微调时,我的应用程序崩溃了同样的问题。以我为例,我被填充微调片段的XML文件中被定义,所以诀窍是越来越findViewById()来找到它。我看到你的情况,你试图用getActivity():
SP =(微调)getActivity()findViewById(R.id.spinner1)。
我也尝试使用这两种getActivity()和getView()和既造成崩溃(空飞旋,分别空指针异常)。
我终于得到这个与片段的视图替换getActivity()工作。我通过填充微调时onCreateView()被调用这样做。下面是一些片段从我的最后code:
私人微调微调;
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,捆绑savedInstanceState)
{
查看查看= inflater.inflate(R.layout.myFragmentXmlFile,集装箱,FALSE);
//现在使用上述观点来填充微调。
setSpinnerContent(视图);
...
}私人无效setSpinnerContent(查看视图)
{
微调=(微调)view.findViewById(R.id.mySpinner);
...
spinner.setAdapter(适配器);
...
}
于是,我通过了片段视图进入我的功能,并引用了视图配置微调。这工作完美。 (和快速的声明 - 我是新来的Android自己,所以也许上面的一些术语可以纠正或者如果需要被更多有经验的人澄清。)
希望它帮助!
I have a Activity with two fragments. One of them hava a spinner. When I populate it the app crashes. I don't know why. In android developers it's confused how do it in fragments, it seems is diferent like normal activity.
Thanks!
public class InstrumentsFrag extends Fragment {
TextView tv1;
Spinner sp;
String[] os = {"Cupcake v1.5", "Donut v1.6", "Éclair v2.0/2.1", "Froyo v2.2",
"Gingerbread v2.2", "Honeycomb v3.0/3.1"};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.instruments, container, false);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sp = (Spinner) getActivity().findViewById(
R.id.spinner1);
ArrayAdapter <CharSequence>adapter = ArrayAdapter.createFromResource( getActivity(), R.array.sections , android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp.setAdapter(adapter);
}
I had the same problem where my app crashed when populating a spinner. In my case, the spinner I was populating was defined in the fragment's XML file, so the trick was getting findViewById() to find it. I see in your case you tried to use getActivity():
sp = (Spinner) getActivity().findViewById(R.id.spinner1);
I also tried using both getActivity() and getView(), and both caused crashes (null spinner, and NULL Pointer exception respectively).
I finally got this to work by replacing getActivity() with the fragment's view. I did this by populating the spinner when onCreateView() is called. Here are some snippets from my final code:
private Spinner spinner;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.myFragmentXmlFile, container, false);
// Now use the above view to populate the spinner.
setSpinnerContent( view );
...
}
private void setSpinnerContent( View view )
{
spinner = (Spinner) view.findViewById( R.id.mySpinner );
...
spinner.setAdapter( adapter );
...
}
So I passed the fragment view into my function and referenced that view to configure the spinner. That worked perfectly. (And quick disclaimer - I'm new to Android myself, so perhaps some of the above terminology can be corrected or clarified if needed by more experienced people.)
Hope it helps!
这篇关于错误片段填充微调的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!