2014-09-04 3 views
2

my problem Я работаю над транзакцией между фрагментами в android, у меня есть фрагмент, содержащий некоторый relativelayout, на каждом макете я должен открыть новый фрагмент, поэтому я ссылаюсь на столько ссылок и пробовал, как показано ниже, но он дает мне ошибку все время, поэтому, пожалуйста, предложите мне, где неправильно в моем коде, пожалуйста, спасите меня, спасибо заранее.Как перейти от одного фрагмента к другому с помощью кнопки click в 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 активность –

+0

нормально ... Пожалуйста, подождите, я отправляю код – user3820044

+0

@ Rod_Algonquin-смотрите мое редактирование – user3820044

ответ

1

Попробуйте это:

Пример:

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

Edit:

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

+0

Где вы использовали этот макет? DetailDashBoardFragment.xml , а также вы можете опубликовать свой tab_bar.xml – yhel

+0

См. Edit – user3820044

0

Пожалуйста, попробуйте этот код:

Fragment fragment = new MoveSearchStudentFragment(); 
    FragmentManager fm = getActivity().getSupportFragmentManager(); 
    FragmentTransaction ft = fm.beginTransaction(); 
    ft.replace(R.id.content_frame, fragment); 
    ft.commit(); 
Смежные вопросы