2015-03-14 2 views
0

Я пытаюсь реализовать представление списка в фрагменте. Но когда я запускаю приложение, он падает. Вот код для HomeFragment.java классаRuntime Exception при реализации listview во фрагменте

package info.nadimemon.slidingmenu; 
import android.app.Fragment; 
import android.app.ListFragment; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 

public class HomeFragment extends ListFragment { 

public HomeFragment(){} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_home, container, false); 


    String[] adobe_products = getResources().getStringArray(R.array.adobe_products); 
    this.setListAdapter(new ArrayAdapter<String>(getActivity(), R.layout.fragment_home, R.id.label, adobe_products)); 


    return rootView; 
} 

}

вот мой LogCat

03-14 20:06:27.554 1099-1099/info.androidhive.slidingmenu W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 
03-14 20:06:27.574 1099-1099/info.androidhive.slidingmenu E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{info.androidhive.slidingmenu/info.androidhive.slidingmenu.MainActivity}: java.lang.RuntimeException: Content has view with id attribute 'android.R.id.list' that is not a ListView class 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
      at android.app.ActivityThread.access$600(ActivityThread.java:123) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
      at android.os.Handler.dispatchMessage(Handler.java:99) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:4424) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.RuntimeException: Content has view with id attribute 'android.R.id.list' that is not a ListView class 
      at android.app.ListFragment.ensureList(ListFragment.java:402) 
      at android.app.ListFragment.onViewCreated(ListFragment.java:203) 
      at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:842) 
      at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1032) 
      at android.app.BackStackRecord.run(BackStackRecord.java:622) 
      at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1382) 
      at android.app.Activity.performStart(Activity.java:4474) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1929) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
            at android.app.ActivityThread.access$600(ActivityThread.java:123) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
            at android.os.Handler.dispatchMessage(Handler.java:99) 
            at android.os.Looper.loop(Looper.java:137) 
            at android.app.ActivityThread.main(ActivityThread.java:4424) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:511) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
            at dalvik.system.NativeStart.main(Native Method) 
03-14 20:06:27.684 1099-1105/info.androidhive.slidingmenu I/dalvikvm﹕ threadid=3: reacting to signal 3 
03-14 20:06:27.704 1099-1105/info.androidhive.slidingmenu I/dalvikvm﹕ Wrote stack traces to '/data/anr/traces.txt' 
03-14 20:06:28.144 1099-1105/info.androidhive.slidingmenu I/dalvikvm﹕ threadid=3: reacting to signal 3 
03-14 20:06:28.174 1099-1105/info.androidhive.slidingmenu I/dalvikvm﹕ Wrote stack traces to '/data/anr/traces.txt' 

Как я могу решить эту проблему? Я следую этим двум учебным пособиям. http://www.androidhive.info/2013/11/android-sliding-menu-using-navigation-drawer/ http://www.androidhive.info/2011/10/android-listview-tutorial/ Спасибо

+0

Можете ли вы разместить свой MainActivity.java и макеты? –

+0

в нижней части этой страницы вы найдете MainActivity. Я еще не изменил этот класс. http://www.androidhive.info/2013/11/android-sliding-menu-using-navigation-drawer/ – emon

ответ

0
this.setListAdapter(new ArrayAdapter<String>(getActivity(), R.layout.fragment_home, R.id.label, adobe_products)); 

Вместо того, чтобы this.give идентификатор в ListView в вашем фрагменте XML, то обнаружите, что ListView по идентификатору, а затем установите адаптер к этому

ListView yourListView=(ListView)view.findViewById(R.id.yourid); 
    yourListView.setListAdapter(new ArrayAdapter<String>(getActivity(),R.layout.fragment_home, R.id.label, adobe_products)); 
0

В вашей xml у вас есть listView, а потому, что вы распространяете ListFragment, вы должны изменить свой listView id на:

android:id="@id/android:list"

Смежные вопросы