10

Ottengo qualche errore Non so perché. Sto popolando ListView con l'adattatore di array da stringa in frammento. Sto usando questo frammento come schermata principale per essere mostrato in attività principale Questo è il mio codiceArrayAdapter in Fragment - Android

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

ottengo questo errore in uscita:

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 

risposta

7

lvHomePage deve essere nullo. Utilizzare invece lvHomePage = (ListView) view.findViewById(R.id.lvHomePage);.

2

Il problema è all'interno lvHomePage = (ListView) getActivity().findViewById(R.id.lvHomePage); che c'è di sbagliato si dovrebbe ottenere la vista principale è view non l'attività quindi dovrebbe essere come questo

lvHomePage = (ListView) view.findViewById(R.id.lvHomePage);

4

Prova questo modo

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

come AIL detto, dovrei usare view invece di getActivity() – KiKo

Problemi correlati