Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ArrayAdapter in Fragment - Android

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

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.access$800(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
like image 498
KiKo Avatar asked Sep 18 '14 21:09

KiKo


People also ask

What is an ArrayAdapter in Android?

ArrayAdapter is the most commonly used adapter in android. When you have a list of single type items which are stored in an array you can use ArrayAdapter. Likewise, if you have a list of phone numbers, names, or cities. ArrayAdapter has a layout with a single TextView.


1 Answers

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));
   ...
}
like image 141
ArmDroid Avatar answered Sep 17 '22 18:09

ArmDroid