ArrayAdapter in Fragment - Android

43,245

Solution 1

lvHomePage must be null. Use lvHomePage = (ListView) view.findViewById(R.id.lvHomePage); instead.

Solution 2

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));
   ...
}

Solution 3

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) view.findViewById(R.id.lvHomePage);

Share:
43,245
KiKo
Author by

KiKo

What can I say.....I'm newbie here :)

Updated on July 09, 2022

Comments

  • KiKo
    KiKo almost 2 years

    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
    
  • KiKo
    KiKo over 9 years
    as AIL said, I should use view instead of getActivity()