我正在使用片段和naviagaton抽屉活动的应用程序中工作。 我做了一些基本的事情,我经常不得不写#34; findViewById"。
spinner = (Spinner)findViewById(R.id.spinner);
通常它工作正常但是在片段的onCreatView上我遇到了麻烦。程序所说的任何地方都无法解决方法findviewbyid"我在哪里使用findviewbyId。
我读了很多关于这个主题的问题和答案,并尝试了一切:
1
spinner = (Spinner)getView.findViewById(R.id.spinner);
return inflater.inflate(R.layout.fragment_first, container, false);
2
spinner = (Spinner)getActivity.findViewById(R.id.spinner);
return inflater.inflate(R.layout.fragment_first, container, false);
3
View v = inflater.inflate(R.layout.fragment_first, container, false);
spinner = (Spinner)v.findViewById(R.id.spinner);
return v;
但没有一个有助于解决我的问题......
完整代码:
public class First extends Fragment {
Spinner spinner;
public First() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
spinner = (Spinner)findViewById(R.id.spinner);
return inflater.inflate(R.layout.fragment_first, container, false);
}
}
那么如何在片段中使用textviews,imageviews,spinner等呢?
修改 我创建了一个新的简单项目并且知道我可以使用Buttons,TextView ......,但我不知道在初始化对象时是否正常获取片段警告:
textView=(TextView)v.findViewById(R.id.textView);
当我使用鼠标(TextView)时,我收到此报告:
Casting 'v.findViewById(R.id.textView)' to 'TextView' is redundant
这可以吗?我该如何解决这个问题?
答案 0 :(得分:3)
这应该可以解决问题
修改onCreateView()
,如下所示:
View view = inflater.inflate(R.layout.fragment_first, container, false);
spinner = (Spinner)view.findViewById(R.id.spinner);
return view;
请注意,在这种情况下,布局fragment_first
应该包含您想要查找的视图(即微调器)。
答案 1 :(得分:1)
试试这个:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
// Defines the xml file for the fragment
View view = inflater.inflate(R.layout.fragment_foo, parent, false);
spinner = (Spinner)view.findViewById(R.id.spinner);
return view;
}