2012-09-06 3 views
0

조각 내 ListView를 표시 할 때 문제가 있습니다. 내 조각에 ListFragment를 사용하고 있습니다. 내 실제 문제가 어디인지 알 수 없었습니다.조각 내 ListView 오류가 발생합니다

CategoriesFragment.java

public class CategoriesFragment extends ListFragment { 
ListView lv; 
TextView tv;  
    public CategoriesFragment() { 
    }  

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) {   
    if(container==null) 
     return null; 
    inflater.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View view = inflater.inflate(R.layout.categories_fragment,container,false); 
    View listView = (ListView)view.findViewById(R.id.listview1); 
    return view;   
    }  

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) {  
    super.onActivityCreated(savedInstanceState); 
    final String[] fruits = new String[] { "Apple", "Avocado", "Banana", 
     "Blueberry", "Coconut", "Durian", "Guava", "Kiwifruit"};    
    setListAdapter(new ArrayAdapter<String> 
     (getActivity(),R.layout.categories_fragment,fruits));  
    } 
} 

PagerAdaper.java

public class SectionsPagerAdapter extends FragmentPagerAdapter { 
    public SectionsPagerAdapter(FragmentManager fm) { 
    super(fm); 
    } 

    @Override 
    public Fragment getItem(int i) { 
    switch(i) { 
    case 0: 
     Fragment fragment = new CategoriesFragment(); 
     return fragment; 
     break; 
    case 1: 
     Fragment fragment = new FeaturedFragment(); 
     return fragment; 
     break 
    } 
    return null; 
    } 

    @Override 
    public int getCount() { 
    return 2; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
    switch (position) { 
     case 0: return "CATEGORIES"; 
     case 1: return "FEATURED"; 
    } 
    return null; 
    } 
} 

categories_fragment.xml

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

<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/listview1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

DDMS 오류 텍스트 :

09-06 12:37:47.402: E/AndroidRuntime(2611): FATAL EXCEPTION: main 
09-06 12:37:47.402: E/AndroidRuntime(2611): java.lang.RuntimeException: Your content  must have a ListView whose id attribute is 'android.R.id.list' 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.support.v4.app.ListFragment.ensureList(ListFragment.java:344) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.support.v4.app.ListFragment.onViewCreated(ListFragment.java:145) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:885) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1083) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:635) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1431) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:431) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.support.v4.view.ViewPager.populate(ViewPager.java:895) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.support.v4.view.ViewPager.populate(ViewPager.java:772) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1234) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.view.View.measure(View.java:12723) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1017) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:555) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.view.View.measure(View.java:12723) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:293) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.view.View.measure(View.java:12723) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:812) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:553) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.view.View.measure(View.java:12723) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698) 
09-06 12:37:47.402: E/AndroidRuntime(2611):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:293) 
+0

logcat 오류가 있습니다. '사용자의 id 속성이'android.R.id.list '인 ListView가 있어야합니다. 당신의 목록보기는'android : id = "@android : id/list"이어야합니다 ' ' – Akshay

+0

예. 그 문제는 해결되었습니다. 감사. 다른 오류가 발생했습니다. 물어보기 전에 자신을 해결하려고 노력 중입니다. – intrepidkarthi

답변

4

변경이

<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/listview1" 
android:layout_width="match_parent" 
android:layout_height="match_parent"/> 

,

<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/list" 
android:layout_width="match_parent" 
android:layout_height="match_parent"/> 

문제는 ID와 함께입니다. 이 같은 ID 뭔가가 있어야합니다 ListFragment 당신의 ListView,

+0

감사합니다. @ 셀바. 이 줄'Categories'에서 CategoriesFragment.java에 오류가 발생합니다. View listView = (ListView) view.findViewById (R.id.listview1); 목록보기의 ID를 가져올 수 없습니다. – intrepidkarthi

+0

android.R.id.list로 변경했습니다. 그 문제는 해결되었습니다. 그러나 여전히 다른 문제가 있습니다. 나는 그것에 대해 연구 중이다. – intrepidkarthi

+0

지금이 오류 받기. "arrayadapter는 리소스 ID가 텍스트 뷰 여야합니다." 어댑터에서 listview resuorce id를 전달할 수 없다는 뜻입니까? – intrepidkarthi

3

대신 android:id="@+id/listview1"@android:id/list 사용하기 때문에 android:id="android:id/list"

을 확장 할 때

+0

예 : http://developer.android.com/reference/android/app/ListFragment.html – Shrikant

1

ListFragment has a default layout that consists of a single list view. However, if you desire, you can customize the fragment layout by returning your own view hierarchy from onCreateView(LayoutInflater, ViewGroup, Bundle). To do this, your view hierarchy must contain a ListView object with the id "@android:id/list" (or list if it's in code) 당신은 이미 ListFragment를 서브 클래 싱이 이미 ListView 개체를 개최했다. 보기 계층 구조는 @+id/listview1 대신 인 ListView 객체를 포함해야합니다.

관련 문제