2013-07-27 3 views
11

Próbuję użyć ListView w fragmentu. Ale pojawia się ten błąd: WYJĄTKOWA WYSTĘPOWANIE: główny wyjątek java.lang.RuntimeException: treść ma widok z atrybutem id "android.R.id.list", który nie jest klasą ListView.
mój kod:krytyczny wyjątek: Głównym java.lang.RuntimeException: Zawartość ma widok z atrybutem id „android.R.id.list”, że nie jest klasą ListView

Moja ListFragment:

public class whitelist_list extends ListFragment { 


    Context mContext; 

    @Override 
    public void onAttach(Activity activity) { 
     mContext = activity; 
     Log.i("Event", "onAttach called"); 
     super.onAttach(activity); 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
    } 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     String[] values = new String[] { "Android", "iPhone", "WindowsMobile", 
       "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", 
       "Linux", "OS/2" }; 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), 
       android.R.layout.simple_list_item_1, values); 
     setListAdapter(adapter); 
     return inflater.inflate(R.layout.whitelist_content, container, false); 
    } 

    @Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 
     // Do something with the data 
    } 

} 


whitelist_list newFragment = new whitelist_list(); 
fragmentManager.beginTransaction() 
.replace(R.id.content_frame, newFragment) 
.commit(); 

Edit: Rozwiązanie: Declare ListView z android: id = "@ id/android: lista"

+2

jeśli masz ListView w układzie następnie upewnij się, że deklarują ListView z 'android: id =" @ id/android: list "' id –

Odpowiedz

17

Jeśli używasz ListActivity/fragment, identyfikator dla ListView w układzie powinien być @android: id/listy, więc: W swojej whitelist_list.xml (whatever_activityname .xml) w ListView zmienić identyfikator do android: id = "@ android: id/listy"

<ListView android:id="@android:id/list" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 
1

Miałem ten błąd jakiś czas temu. Z jakiegoś powodu zmodyfikowano układ XML, aby jeden z komponentów miał niewłaściwy typ. Przejdź do xml i poszukaj "android.R.id.list", która nie należy do tego przedmiotu. Nie wiem, jak to się zmieniło, ale myślę, że może podczas korzystania z edytora GUI zmieniłem coś na listę, która nie powinna być. Jeśli jej nie widzisz, dodawać układ

+0

To mi pomogło. Ale miałem dwa ListFragmenty, z dwoma plikami układu, z których każdy potrzebował ListView z id '@android: id/list'. Zmieniłem ListFragment z powrotem do normalnego Fragmentu w jednym pliku i dodałem ListView. – Micky