Fragment 中的 ArrayAdapter - Android
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/25922451/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
ArrayAdapter in Fragment - Android
提问by KiKo
I get some error I don't know why. I'm populating ListView with array adapter from string in fragment. I'm using this fragment as main screen to be shown in main activity This is my code
我收到一些错误,我不知道为什么。我正在从片段中的字符串中使用数组适配器填充 ListView。我将此片段用作要在主要活动中显示的主屏幕 这是我的代码
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;
}
}
I get this output error:
我收到此输出错误:
09-18 21:07:27.315: E/AndroidRuntime(3839): FATAL EXCEPTION: main
09-18 21:07:27.315: E/AndroidRuntime(3839): Process: com.kiko.bmgu.crnobelo, PID: 3839
09-18 21:07:27.315: E/AndroidRuntime(3839): java.lang.RuntimeException: Unable to start activity ComponentInfo com.kiko.bmgu.crnobelo/com.kiko.bmgu.crnobelo.activities.MainActivity}: java.lang.NullPointerException
09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)\
09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.ActivityThread.access0(ActivityThread.java:135)
09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
09-18 21:07:27.315: E/AndroidRuntime(3839): at android.os.Handler.dispatchMessage(Handler.java:102)
09-18 21:07:27.315: E/AndroidRuntime(3839): at android.os.Looper.loop(Looper.java:136)
09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.ActivityThread.main(ActivityThread.java:5017)
09-18 21:07:27.315: E/AndroidRuntime(3839): at java.lang.reflect.Method.invokeNative(Native Method)
09-18 21:07:27.315: E/AndroidRuntime(3839): at java.lang.reflect.Method.invoke(Method.java:515)
09-18 21:07:27.315: E/AndroidRuntime(3839): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
09-18 21:07:27.315: E/AndroidRuntime(3839): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
09-18 21:07:27.315: E/AndroidRuntime(3839): at dalvik.system.NativeStart.main(Naive Method)
09-18 21:07:27.315: E/AndroidRuntime(3839): Caused by: java.lang.NullPointerException
09-18 21:07:27.315: E/AndroidRuntime(3839): at com.kiko.bmgu.fragments.HomePage.onCreateView(HomePage.java:25)
09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.Fragment.performCreateView(Fragment.java:1700)
09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890)
09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.BackStackRecord.run(BackStackRecord.java:684)
09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.Activity.performStart(Activity.java:5240)
09-18 21:07:27.315: E/AndroidRuntime(3839): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2168)
09-18 21:07:27.315: E/AndroidRuntime(3839): ... 11 more
采纳答案by mbmc
lvHomePage
must be null. Use lvHomePage = (ListView) view.findViewById(R.id.lvHomePage);
instead.
lvHomePage
必须为空。使用lvHomePage = (ListView) view.findViewById(R.id.lvHomePage);
来代替。
回答by ArmDroid
Try this way
试试这个方法
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));
...
}
回答by Kiloreux
The problem is within lvHomePage = (ListView) getActivity().findViewById(R.id.lvHomePage);
that's wrong you should get the root view is view
not the activity
so it should be like this
问题在于lvHomePage = (ListView) getActivity().findViewById(R.id.lvHomePage);
那是错误的你应该得到根视图view
不是活动所以它应该是这样的
lvHomePage = (ListView) view.findViewById(R.id.lvHomePage);
lvHomePage = (ListView) view.findViewById(R.id.lvHomePage);