2012-11-29 2 views
0

조각을 호출 할 수 있습니다. 그러나 나는 List fragment with가 아니었을 것이다. 왜 직접 호출 할 수 없습니다 하지 무엇을 잘못onclickListener 호출 사용 방법 ListFragment

이이 코드 조각 제어 templistview.java입니다

teamp.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 
    FragmentManager AS = getFragmentManager(); 
    FragmentTransaction USA = AS.beginTransaction(); 
//planA 
    ListFragment UF =(ListFragment) AS.findFragmentById(R.id.frameLayout2); 
//planB  
//Fragment UF = AS.findFragmentById(R.id.frameLayout2); 
//planA and planB Two ways to type over will not work 
        if (UF == null) { 
         String title = "Fragment A"; 
         templistview usermune = new templistview(title); 
         USA.add(R.id.frameLayout2, usermune); 
         USA.addToBackStack(null); 
         USA.commit(); 
         } 

전화의 유형입니다

public class templistview extends ListFragment { 
    String title1; 
    TextView textView; 
     private ListView listView; 
     private View v; 

    public templistview() { 

    } 

    public templistview(String title) { 
     this.title1 = title; 

    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     super.onCreateView(inflater, container, savedInstanceState); 
     View view = inflater.inflate(R.layout.templist, container, false); 
     listView = (ListView)view.findViewById(R.id.listView); 
     String[] arr = new String[]{ 
      "A","B","C","D","E","F","G" 
     }; 
     ArrayAdapter<String> adapter = 
      new ArrayAdapter<String>(getActivity(), 
       android.R.layout.simple_list_item_1,arr); 
     listView.setAdapter(adapter); 
     return view; 

    } 

    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 

    } 

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

    } 

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

    } 

    @Override 
    public void onStart() { 
     super.onStart(); 

    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 


    } 

    @Override 
    public void onStop() { 
     super.onStop(); 
    } 

    @Override 
    public void onDestroyView() { 
     super.onDestroyView(); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
    } 

    @Override 
    public void onDetach() { 
     super.onDetach(); 
    } 

    public static Fragment findFragmentById(int framelayout) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

} 

이것은 잘못된 로그

11-29 11:29:30.208: E/AndroidRuntime(22541): FATAL EXCEPTION: main 
11-29 11:29:30.208: E/AndroidRuntime(22541): java.lang.RuntimeException: Content has view with id attribute 'android.R.id.list' that is not a ListView class 
11-29 11:29:30.208: E/AndroidRuntime(22541): at android.app.ListFragment.ensureList(ListFragment.java:402) 
11-29 11:29:30.208: E/AndroidRuntime(22541): at android.app.ListFragment.onViewCreated(ListFragment.java:203) 
11-29 11:29:30.208: E/AndroidRuntime(22541): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:842) 
11-29 11:29:30.208: E/AndroidRuntime(22541): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1032) 
11-29 11:29:30.208: E/AndroidRuntime(22541): at android.app.BackStackRecord.run(BackStackRecord.java:622) 
11-29 11:29:30.208: E/AndroidRuntime(22541): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1382) 
11-29 11:29:30.208: E/AndroidRuntime(22541): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:426) 
11-29 11:29:30.208: E/AndroidRuntime(22541): at android.os.Handler.handleCallback(Handler.java:605) 
11-29 11:29:30.208: E/AndroidRuntime(22541): at android.os.Handler.dispatchMessage(Handler.java:92) 
11-29 11:29:30.208: E/AndroidRuntime(22541): at android.os.Looper.loop(Looper.java:137) 
11-29 11:29:30.208: E/AndroidRuntime(22541): at android.app.ActivityThread.main(ActivityThread.java:4511) 
11-29 11:29:30.208: E/AndroidRuntime(22541): at java.lang.reflect.Method.invokeNative(Native Method) 
11-29 11:29:30.208: E/AndroidRuntime(22541): at java.lang.reflect.Method.invoke(Method.java:511) 
11-29 11:29:30.208: E/AndroidRuntime(22541): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980) 
11-29 11:29:30.208: E/AndroidRuntime(22541): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747) 
11-29 11:29:30.208: E/AndroidRuntime(22541): at dalvik.system.NativeStart.main(Native Method) 

UI 나는 두 위치가 를 업데이트하지만 여전히

11-29 11:55:18.583: E/AndroidRuntime(25053): FATAL EXCEPTION: main 
11-29 11:55:18.583: E/AndroidRuntime(25053): java.lang.NullPointerException 
11-29 11:55:18.583: E/AndroidRuntime(25053): at com.example.tr.templistview.onCreateView(templistview.java:43) 
11-29 11:55:18.583: E/AndroidRuntime(25053): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:828) 
11-29 11:55:18.583: E/AndroidRuntime(25053): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1032) 
11-29 11:55:18.583: E/AndroidRuntime(25053): at android.app.BackStackRecord.run(BackStackRecord.java:622) 
11-29 11:55:18.583: E/AndroidRuntime(25053): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1382) 
11-29 11:55:18.583: E/AndroidRuntime(25053): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:426) 
11-29 11:55:18.583: E/AndroidRuntime(25053): at android.os.Handler.handleCallback(Handler.java:605) 
11-29 11:55:18.583: E/AndroidRuntime(25053): at android.os.Handler.dispatchMessage(Handler.java:92) 
11-29 11:55:18.583: E/AndroidRuntime(25053): at android.os.Looper.loop(Looper.java:137) 
11-29 11:55:18.583: E/AndroidRuntime(25053): at android.app.ActivityThread.main(ActivityThread.java:4511) 
11-29 11:55:18.583: E/AndroidRuntime(25053): at java.lang.reflect.Method.invokeNative(Native Method) 
11-29 11:55:18.583: E/AndroidRuntime(25053): at java.lang.reflect.Method.invoke(Method.java:511) 
11-29 11:55:18.583: E/AndroidRuntime(25053): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980) 
11-29 11:55:18.583: E/AndroidRuntime(25053): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747) 
11-29 11:55:18.583: E/AndroidRuntime(25053): at dalvik.system.NativeStart.main(Native Method) 

답변

1

<ListView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@android:id/list" // == here is the change 
/> 

에 XML에서 목록보기를 변경하고 또한 활동에서 목록보기를 초기화

오류했을

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <ListView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/listView" 
    /> 
</LinearLayout> 

인터페이스 코드 templist.xml 예 :

listView = (ListView)view.findViewById(android.R.id.list); 
+0

오류가 계속 존재합니다. 정보를 추가해야합니까? –