0

I am working on a app where I have 4 fragments. Now I want to add listview on the fragments. I have tried various links from google but haven't been able to do it.

My Code for Fragment class:

public class ExerciseActivity extends Fragment {

public static final String ARG_SECTION_NUMBER = "section_number";

public ExerciseActivity() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // Create a new TextView and set its text to the fragment's section
    // number argument value.
    View V = inflater.inflate(R.layout.fragment_exercise,container,false);
    //View V = inflater.inflate(R.layout.mainList, container, false);

    ListView LV = (ListView) this.getActivity().findViewById(R.id.mainList);
    String List[] = new String[2];
    List[0] = "tst1";
    List[1] ="tst2";
    ArrayAdapter<String> aa = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, List);

    LV.setAdapter(aa);

    return V;
}
}

Following is my code for xml of the fragment:

<?xml version="1.0" encoding="utf-8"?>

Whenever I try to run my app I am getting following error:

05-29 00:11:42.680: E/AndroidRuntime(1298): FATAL EXCEPTION: main 05-29 00:11:42.680: E/AndroidRuntime(1298): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kris.fittracker/com.kris.fittracker.MainActivity}: java.lang.NullPointerException 05-29 00:11:42.680: E/AndroidRuntime(1298): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955) 05-29 00:11:42.680: E/AndroidRuntime(1298): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 05-29 00:11:42.680: E/AndroidRuntime(1298): at android.app.ActivityThread.access$600(ActivityThread.java:122) 05-29 00:11:42.680: E/AndroidRuntime(1298): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 05-29 00:11:42.680: E/AndroidRuntime(1298): at android.os.Handler.dispatchMessage(Handler.java:99) 05-29 00:11:42.680: E/AndroidRuntime(1298): at android.os.Looper.loop(Looper.java:137) 05-29 00:11:42.680: E/AndroidRuntime(1298): at android.app.ActivityThread.main(ActivityThread.java:4340) 05-29 00:11:42.680: E/AndroidRuntime(1298): at java.lang.reflect.Method.invokeNative(Native Method) 05-29 00:11:42.680: E/AndroidRuntime(1298): at java.lang.reflect.Method.invoke(Method.java:511) 05-29 00:11:42.680: E/AndroidRuntime(1298): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 05-29 00:11:42.680: E/AndroidRuntime(1298): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 05-29 00:11:42.680: E/AndroidRuntime(1298): at dalvik.system.NativeStart.main(Native Method) 05-29 00:11:42.680: E/AndroidRuntime(1298): Caused by: java.lang.NullPointerException 05-29 00:11:42.680: E/AndroidRuntime(1298): at com.kris.fittracker.ExerciseActivity.onCreateView(ExerciseActivity.java:31) 05-29 00:11:42.680: E/AndroidRuntime(1298): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500) 05-29 00:11:42.680: E/AndroidRuntime(1298): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:938) 05-29 00:11:42.680: E/AndroidRuntime(1298): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1115) 05-29 00:11:42.680: E/AndroidRuntime(1298): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1097) 05-29 00:11:42.680: E/AndroidRuntime(1298): at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1895) 05-29 00:11:42.680: E/AndroidRuntime(1298): at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:566) 05-29 00:11:42.680: E/AndroidRuntime(1298): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1133) 05-29 00:11:42.680: E/AndroidRuntime(1298): at android.app.Activity.performStart(Activity.java:4475) 05-29 00:11:42.680: E/AndroidRuntime(1298): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1928)

4 Answers 4

2

Problem is that:

ListView LV = (ListView) this.getActivity().findViewById(R.id.mainList);

getActivity() context don't know about mainList, you need to use proper View that contains ListView with that id:

ListView LV = (ListView) V.findViewById(R.id.mainList);

and that View I'm talking about is your View named as V. Now it should works.

Sign up to request clarification or add additional context in comments.

Comments

1

if your listview contain in R.layout.fragment_exercise layout file, change listview mapping to

 ListView LV = (ListView)V.findViewById(R.id.mainList);

Comments

1

The problem is that you are getting a view from the main activity layout..

ListView LV = (ListView) this.getActivity().findViewById(R.id.mainList);

this.getAcitivity is the main activity..

solution:

Use the view you just inflated

ListView LV = (ListView) V.findViewById(R.id.mainList);

Comments

0

My full code (listview is declared above as "private ListView listView;")

 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    v = inflater.inflate(R.layout.second_fragment, container, false);
    listView = (ListView) v.findViewById(R.id.times_listView);
 return v;
 }

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.