edg*_*iba 3 android android-widget
我有一个活动有两个片段.其中一个有旋转器.当我填充它时,应用程序崩溃.我不知道为什么.在Android开发人员中,它如何在片段中混淆,它似乎与正常活动不同.
谢谢!
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);
}
Run Code Online (Sandbox Code Playgroud)
小智 11
我有同样的问题,我的应用程序在填充微调器时崩溃了.在我的例子中,我填充的微调器是在片段的XML文件中定义的,所以诀窍是让findViewById()找到它.我在你的情况下看到你试图使用getActivity():
sp = (Spinner) getActivity().findViewById(R.id.spinner1);
Run Code Online (Sandbox Code Playgroud)
我也尝试使用getActivity()和getView(),并且两者都导致崩溃(分别为null spinner和NULL Pointer异常).
我终于通过用片段的视图替换getActivity()来实现这一点.我通过在调用onCreateView()时填充微调器来完成此操作.以下是我最终代码中的一些片段:
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 );
...
}
Run Code Online (Sandbox Code Playgroud)
所以我将片段视图传递给我的函数并引用该视图来配置微调器.这非常有效.(并且快速免责声明 - 我自己也是Android的新手,所以如果更有经验的人需要,也许上述某些术语可以得到纠正或澄清.)
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
9014 次 |
| 最近记录: |