2014-09-04 23 views
2

my problem我正在處理Android中的片段之間的事務,我有一個片段包含一些relativelayout,在每個佈局上我必須打開一個新的片段,所以我引用瞭如此多的鏈接並嘗試如下,但它給了我錯誤所有的時間,所以請建議我哪裏錯了我的代碼,請保存我提前謝謝你。如何從一個片段到另一個從一個按鈕點擊在Android中?

錯誤

09-04 12:21:47.764: E/AndroidRuntime(17756): java.lang.IllegalArgumentException: No view found for id 0x7f0500b3 (com.eps.fortalented:id/show_fragment) for fragment DetailDashBoardFragment{42b0b1e0 #1 id=0x7f0500b3} 

代碼

onClick(){ 
            // second fragment 
      DetailDashBoardFragment fragment = new DetailDashBoardFragment(); 
      FragmentTransaction ft = getFragmentManager().beginTransaction(); 
      ft.replace(R.id.show_fragment, fragment).addToBackStack(null); 
      ft.commit(); 

} 

DetailDashBoardFragment.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/show_fragment" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" > 




</FrameLayout> 

deatailDescFragment.java

public class DetailDashBoardFragment extends Fragment implements 
     OnClickListener { 
    View v; 

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

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     v = inflater.inflate(R.layout.detail_dashboard_fragmnet, container, 
       false); 
     return v; 
    } 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

    } 

} 

活動

public class MyMainActivity extends FragmentActivity implements 
     OnTabChangeListener { 
    Menu menu; 
    /** Called when the activity is first created. */ 
    public FragmentTabHost tabHost; 

    @SuppressLint("NewApi") 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     setContentView(R.layout.tab_bar); 
     menu = (Menu) findViewById(R.id.menu_tab); 
     menu.arrow.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       finish(); 
        overridePendingTransition(R.anim.bottom_in, R.anim.top_out); 

      } 
     }); 
     tabHost = (FragmentTabHost) findViewById(R.id.tabhost); 
     tabHost.setOnTabChangedListener(this); 
     tabHost.setup(this, getSupportFragmentManager(), R.id.tabFrameLayout); 

     tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator(""), 
       DashBoardFragment.class, null); 
     tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator(""), 
       DashBoardFragment.class, null); 
     tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator(""), 
       DashBoardFragment.class, null); 
     tabHost.addTab(tabHost.newTabSpec("tab4").setIndicator(""), 
       DashBoardFragment.class, null); 
     tabHost.addTab(tabHost.newTabSpec("tab5").setIndicator(""), 
       DashBoardFragment.class, null); 

     tabHost.getTabWidget() 
       .getChildAt(1) 
       .setBackground(
         getResources().getDrawable(R.drawable.friend_request)); 
     tabHost.getTabWidget().getChildAt(2) 
       .setBackground(getResources().getDrawable(R.drawable.masseges)); 
     tabHost.getTabWidget() 
       .getChildAt(3) 
       .setBackground(
         getResources().getDrawable(R.drawable.notification_btn)); 

     tabHost.getTabWidget() 
       .getChildAt(4) 
       .setBackground(
         getResources().getDrawable(R.drawable.share_icon)); 

     // Set Tab1 as Default tab and change image 
     tabHost.getTabWidget().setCurrentTab(0); 
     tabHost.getTabWidget() 
       .getChildAt(0) 
       .setBackground(
         getResources().getDrawable(
           R.drawable.dashboard_hover_btn)); 
    } 

    @Override 
    public void onTabChanged(String tabId) { 

     /************ Called when tab changed *************/ 

     // ********* Check current selected tab and change according images 
     // *******/ 

     for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) { 
      if (i == 0) 
       tabHost.getTabWidget().getChildAt(i) 
         .setBackgroundResource(R.drawable.dashboard_icon); 
      else if (i == 1) 
       tabHost.getTabWidget() 
         .getChildAt(i) 
         .setBackground(
           getResources().getDrawable(
             R.drawable.friend_request)); 
      else if (i == 2) 
       tabHost.getTabWidget().getChildAt(i) 
         .setBackgroundResource(R.drawable.masseges); 
      else if (i == 3) 
       tabHost.getTabWidget().getChildAt(i) 
         .setBackgroundResource(R.drawable.notification_btn); 
      else if (i == 4) 
       tabHost.getTabWidget().getChildAt(i) 
         .setBackgroundResource(R.drawable.share_icon); 
     } 

     Log.i("tabs", "CurrentTab: " + tabHost.getCurrentTab()); 

     if (tabHost.getCurrentTab() == 0) 
      tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab()) 
        .setBackgroundResource(R.drawable.dashboard_hover_btn); 
     else if (tabHost.getCurrentTab() == 1) 
      tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab()) 
        .setBackgroundResource(R.drawable.friend_request_hover); 
     else if (tabHost.getCurrentTab() == 2) 
      tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab()) 
        .setBackgroundResource(R.drawable.message_hover); 
     else if (tabHost.getCurrentTab() == 3) 
      tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab()) 
        .setBackgroundResource(R.drawable.notification_btn_hover); 
     else if (tabHost.getCurrentTab() == 4) 
      tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab()) 
        .setBackgroundResource(R.drawable.share_icon_hover); 

    } 

    @SuppressLint("InflateParams") 
    private View prepareTabView(Drawable resId) { 
     View view = LayoutInflater.from(this).inflate(R.layout.tab_indicator, 
       null); 
     ImageView iv = (ImageView) view.findViewById(R.id.iv_photo); 
     iv.setBackground(resId); 
     return view; 
    } 

} 

logcat的

09-04 14:33:53.656: E/AndroidRuntime(20715): FATAL EXCEPTION: main 
09-04 14:33:53.656: E/AndroidRuntime(20715): Process: com.eps.fortalented, PID: 20715 
09-04 14:33:53.656: E/AndroidRuntime(20715): java.lang.IllegalArgumentException: No view found for id 0x7f0500b3 (com.eps.fortalented:id/show_fragment) for fragment DetailDashBoardFragment{42b03730 #1 id=0x7f0500b3} 
09-04 14:33:53.656: E/AndroidRuntime(20715): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:934) 
09-04 14:33:53.656: E/AndroidRuntime(20715): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1121) 
09-04 14:33:53.656: E/AndroidRuntime(20715): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 
09-04 14:33:53.656: E/AndroidRuntime(20715): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1484) 
09-04 14:33:53.656: E/AndroidRuntime(20715): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:450) 
09-04 14:33:53.656: E/AndroidRuntime(20715): at android.os.Handler.handleCallback(Handler.java:733) 
09-04 14:33:53.656: E/AndroidRuntime(20715): at android.os.Handler.dispatchMessage(Handler.java:95) 
09-04 14:33:53.656: E/AndroidRuntime(20715): at android.os.Looper.loop(Looper.java:146) 
09-04 14:33:53.656: E/AndroidRuntime(20715): at android.app.ActivityThread.main(ActivityThread.java:5653) 
09-04 14:33:53.656: E/AndroidRuntime(20715): at java.lang.reflect.Method.invokeNative(Native Method) 
09-04 14:33:53.656: E/AndroidRuntime(20715): at java.lang.reflect.Method.invoke(Method.java:515) 
09-04 14:33:53.656: E/AndroidRuntime(20715): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291) 
09-04 14:33:53.656: E/AndroidRuntime(20715): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107) 
09-04 14:33:53.656: E/AndroidRuntime(20715): at dalvik.system.NativeStart.main(Native Method) 

tabbar.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/home_page_bg" > 

    <com.eps.fortalented.uc.Header 
     android:id="@+id/hdr_tab" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 

    <android.support.v4.app.FragmentTabHost 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/tabhost" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_below="@+id/hdr_tab" > 

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:orientation="vertical" > 

      <RelativeLayout 
       android:layout_width="fill_parent" 
       android:layout_height="50dp" 
       android:layout_alignParentBottom="true" 
       android:background="#1F64A4" /> 

      <TabWidget 
       android:id="@+id/tabs" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="0" 
       android:orientation="horizontal" /> 

      <FrameLayout 
       android:id="@+id/tabFrameLayout" 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight="1" /> 
     </LinearLayout> 
    </android.support.v4.app.FragmentTabHost> 

    <com.eps.fortalented.uc.Menu 
     android:id="@+id/menu_tab" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true"> 
    </com.eps.fortalented.uc.Menu> 

</RelativeLayout> 
+0

發表您的活動CLAS – 2014-09-04 06:58:39

+0

確定...請稍候,我張貼代碼 – user3820044 2014-09-04 06:58:58

+0

@ Rod_Algonquin,請看看我的編輯 – user3820044 2014-09-04 07:00:15

回答

1

試試這個:

樣品:

DetailDashBoardFragment fragment = new DetailDashBoardFragment(); 
    FragmentTransaction ft = getChildFragmentManager().beginTransaction(); 
    ft.replace(R.id.show_fragment, fragment).addToBackStack(null); 
    ft.commit(); 

編輯:

android.app.Fragment fr; 
      fr = new DetailDashBoardFragment(); 
      FragmentManager fm = getFragmentManager(); 
      FragmentTransaction fragmentTransaction = fm.beginTransaction(); 
      fragmentTransaction.replace(R.id.show_fragment, fr); 
      fragmentTransaction.commit(); 

希望它能幫助。

+0

它給出了相同的錯誤...請參閱我的logcat跟蹤 – user3820044 2014-09-04 09:04:01

+0

你在哪裏使用這種佈局? DetailDashBoardFragment.xml 也可以發佈您的tab_bar.xml – yhel 2014-09-04 09:21:29

+0

請參閱編輯 – user3820044 2014-09-04 09:27:56

0

請試試這個代碼:

Fragment fragment = new MoveSearchStudentFragment(); 
    FragmentManager fm = getActivity().getSupportFragmentManager(); 
    FragmentTransaction ft = fm.beginTransaction(); 
    ft.replace(R.id.content_frame, fragment); 
    ft.commit(); 
相關問題