2014-03-01 4 views
0

나는 완전히 잃었습니다. 어떻게 그렇게 간단한 일을 할 수 있습니까? mainActivity 조각 (id : listfragment) 있습니다. 활동 시작시 뉴스 항목이있는 목록이 표시됩니다. 내가하고 싶은 것은 탭을 선택하면 목록을 다른 것으로 대체하는 것입니다. 이 정도면 충분하길 바랬습니다 :안드로이드 액션 바는 조각을 바꾸는 것을 아무것도 표시하지 않습니다.

@Override 
    public void onTabSelected(Tab tab, FragmentTransaction fragmentTransaction) { 
     // TODO Auto-generated method stub 

     switch(tab.getPosition()) { 

     case 0: 
      Toast.makeText(this, "Tab News", Toast.LENGTH_SHORT).show(); 
      // News 
      Fragment nfragment = new NewsList(); 
      fragmentTransaction.replace(R.id.listfragment, nfragment); 
      break; 

     case 1: 
      Toast.makeText(this, "Tab Videos", Toast.LENGTH_SHORT).show(); 
      // Videos 
      Fragment vfragment = new YoutubeList(); 
      fragmentTransaction.replace(R.id.listfragment, vfragment); 
     } 

    } 

새 조각이 호출됩니다 (로그를 추가했는지 확인)하지만 레이아웃은 표시되지 않습니다. 누군가 나를 제 불행에서 벗어나게 해주시겠습니까?)

.commit()을 추가하려고했습니다. 즉시 응용 프로그램을 중단합니다. 그 커밋이 자동으로 (그들은 안드로이드 워드 프로세서에서 상태로) 호출하지만 이해가 안가 왜 아무것도 표시되지 않습니다.

로그인) (.commit를 추가 한 후 : 당신이 조각 태그를 사용하는 XML의 단편을 정의하면

03-01 09:43:00.736: D/dalvikvm(4509): GC_FOR_ALLOC freed 79K, 14% free 10147K/11732K, paused 28ms, total 29ms 
03-01 09:43:00.736: I/dalvikvm-heap(4509): Grow heap (frag case) to 12.450MB for 1127536-byte allocation 
03-01 09:43:00.756: D/dalvikvm(4509): GC_FOR_ALLOC freed <1K, 13% free 11248K/12836K, paused 19ms, total 19ms 
03-01 09:43:00.776: D/AbsListView(4509): Get MotionRecognitionManager 
03-01 09:43:00.821: D/AndroidRuntime(4509): Shutting down VM 
03-01 09:43:00.821: W/dalvikvm(4509): threadid=1: thread exiting with uncaught exception (group=0x41a03700) 
03-01 09:43:00.821: E/AndroidRuntime(4509): FATAL EXCEPTION: main 
03-01 09:43:00.821: E/AndroidRuntime(4509): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.switchingbrains.xxx.MainActivity}: java.lang.IllegalStateException: commit already called 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2308) 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2362) 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at android.app.ActivityThread.access$700(ActivityThread.java:168) 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1329) 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at android.os.Looper.loop(Looper.java:137) 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at android.app.ActivityThread.main(ActivityThread.java:5493) 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at java.lang.reflect.Method.invoke(Method.java:525) 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209) 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025) 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at dalvik.system.NativeStart.main(Native Method) 
03-01 09:43:00.821: E/AndroidRuntime(4509): Caused by: java.lang.IllegalStateException: commit already called 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at android.app.BackStackRecord.commitInternal(BackStackRecord.java:582) 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at android.app.BackStackRecord.commit(BackStackRecord.java:574) 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at com.android.internal.app.ActionBarImpl.selectTab(ActionBarImpl.java:608) 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at com.android.internal.app.ActionBarImpl.addTab(ActionBarImpl.java:532) 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at com.android.internal.app.ActionBarImpl.addTab(ActionBarImpl.java:518) 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at com.switchingbrains.xxx.MainActivity.onCreate(MainActivity.java:29) 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at android.app.Activity.performCreate(Activity.java:5372) 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104) 
03-01 09:43:00.821: E/AndroidRuntime(4509):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270) 
03-01 09:43:00.821: E/AndroidRuntime(4509):  ... 11 more 

답변

3

, 당신은 런타임에 교체은`t. FrameLayout을 대신 사용해보고 동일한 ID를 사용하십시오. 이 답변이 너무 짧고 주석의 더,

<FrameLayout .... 
      android:id="@+id/listfragment" 
      .... /> 
+1

는 예를 기입하십시오 : 이것에

<fragment .... android:id="@+id/listfragment" .... /> 

변경을 :

당신은 아마 이런 일이있다. –

+0

@AshleyMedway 고마워, 나는 이것에 새로운 ... – FrankenBel

+0

예제를 포함하여 +1 문제 없음 :) –

관련 문제