我正在尝试从添加Fragment到我的活动中获取Spinner视图,但似乎我无法获得片段和视图.
我有增加了一个活动Fragment到它的LinearLayout,片断的布局是基于来自活动的意图"额外".一切都正确显示,我可以看到片段的所有视图但由于某种原因,当我调用findFragmentByTag(String tag)它时返回null,因此我不能调用getView().
以下是我如何将片段代码添加到我的活动中:
...onCreate(){
...
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Fragment fr = new Fragment(){
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(layoutID, container, false);
}
};
ft.add(R.id.formsListActivity_Container, fr, "form_fragment_tag");
ft.commit();
...
Run Code Online (Sandbox Code Playgroud)
}
然后我尝试获取这样的片段并获得一个微调器视图来添加字符串数组:
Fragment f = fm.findFragmentByTag("form_fragment_tag");
Spinner spinner = (Spinner) f.getView().findViewById(R.id.city_spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.city_list, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
但是我得到一个null异常,因为findFragmentByTag()返回null
我究竟做错了什么?我已经验证了几次代码并且标签是相同的.我还确保spinner的id正确地位于XML布局文件中,并且片段正在加载正确的XML布局,因为我可以看到它(如果注释是从片段部分获取视图).