碎片中的ArrayAdapter-Android
我犯了一些错误,我不知道为什么。我正在用片段中字符串的数组适配器填充ListView。我使用这个片段作为主屏幕显示在主活动中 这是我的密码碎片中的ArrayAdapter-Android,android,listview,android-fragments,android-listview,android-arrayadapter,Android,Listview,Android Fragments,Android Listview,Android Arrayadapter,我犯了一些错误,我不知道为什么。我正在用片段中字符串的数组适配器填充ListView。我使用这个片段作为主屏幕显示在主活动中 这是我的密码 public class HomePage extends Fragment { private ListView lvHomePage; private String[] items; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bun
public class HomePage extends Fragment {
private ListView lvHomePage;
private String[] items;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home_page, container, false);
items = getActivity().getResources().getStringArray(R.array.test);
lvHomePage = (ListView) getActivity().findViewById(R.id.lvHomePage);
lvHomePage.setAdapter(new ArrayAdapter<String>(getActivity().getApplicationContext(),
android.R.layout.simple_list_item_1 , items));
return view;
}
}
lvHomePage
必须为空。使用lvHomePage=(ListView)view.findviewbyd(R.id.lvHomePage)代码>取而代之。问题出在lvHomePage=(ListView)getActivity()中代码>
这是错误的,您应该得到根视图是视图
而不是活动
所以应该是这样
lvHomePage=(ListView)view.findviewbyd(R.id.lvHomePage)代码>试试这种方法
private ListView lvHomePage;
private String[] items;
private View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home_page, container, false);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
items = view.getResources().getStringArray(R.array.test);
lvHomePage = (ListView) view.findViewById(R.id.lvHomePage);
lvHomePage.setAdapter(new ArrayAdapter<String>(view.getContext(),
android.R.layout.simple_list_item_1 , items));
...
}
private-ListView-lvHomePage;
私有字符串[]项;
私人视野;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.fragment\u主页,容器,false);
返回视图;
}
@凌驾
ActivityCreated上的公共无效(@Nullable Bundle savedinStateCState){
super.onActivityCreated(savedInstanceState);
items=view.getResources().getStringArray(R.array.test);
lvHomePage=(ListView)view.findviewbyd(R.id.lvHomePage);
lvHomePage.setAdapter(新的ArrayAdapter(view.getContext()),
android.R.layout.simple_list_item_1,items));
...
}
正如艾尔所说,我应该使用视图而不是getActivity()
private ListView lvHomePage;
private String[] items;
private View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home_page, container, false);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
items = view.getResources().getStringArray(R.array.test);
lvHomePage = (ListView) view.findViewById(R.id.lvHomePage);
lvHomePage.setAdapter(new ArrayAdapter<String>(view.getContext(),
android.R.layout.simple_list_item_1 , items));
...
}