我正在研究android中片段之间的事务,我有一个片段包含一些relativelayout,在每个布局上我都要打开一个新片段,所以我引用了很多链接并尝试如下,但它一直给我错误,所以请建议我在我的代码中哪里出错,请保存我,提前谢谢。
错误
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 :(得分: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();
希望它有所帮助。
答案 1 :(得分:0)
请尝试以下代码:
Fragment fragment = new MoveSearchStudentFragment();
FragmentManager fm = getActivity().getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.content_frame, fragment);
ft.commit();