Java 未找到id为0x7f0b006b的从FragmentActivity到Fragment的视图
我正试图从碎片活动中打开一个片段。我已经申请了导航抽屉。在主活动中,我打开了FragmentActivity链接_New.java,我想在那里打开一个片段链接_Create.java 主导航绘图列表包含以下内容:Java 未找到id为0x7f0b006b的从FragmentActivity到Fragment的视图,java,android,android-fragments,Java,Android,Android Fragments,我正试图从碎片活动中打开一个片段。我已经申请了导航抽屉。在主活动中,我打开了FragmentActivity链接_New.java,我想在那里打开一个片段链接_Create.java 主导航绘图列表包含以下内容: <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" a
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/frame_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ListView
android:id="@+id/left_drawer"
android:layout_width="250dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@color/list_background"
android:choiceMode="singleChoice"
android:divider="@color/list_divider"
android:dividerHeight="1dp"
android:listSelector="@drawable/drawer_list_selector" />
</android.support.v4.widget.DrawerLayout>
因此,我得到以下错误:
04-07 13:36:19.142: E/AndroidRuntime(20620): FATAL EXCEPTION: main
04-07 13:36:19.142: E/AndroidRuntime(20620): Process: com.ylg.LINK, PID: 20620
04-07 13:36:19.142: E/AndroidRuntime(20620): java.lang.IllegalArgumentException: No view found for id 0x7f0b006b (com.ylg.LINK:id/frame_container) for fragment LINK_Create{3093cc8e #0 id=0x7f0b006b}
04-07 13:36:19.142: E/AndroidRuntime(20620): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:934)
04-07 13:36:19.142: E/AndroidRuntime(20620): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1121)
04-07 13:36:19.142: E/AndroidRuntime(20620): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
04-07 13:36:19.142: E/AndroidRuntime(20620): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1484)
04-07 13:36:19.142: E/AndroidRuntime(20620): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:450)
04-07 13:36:19.142: E/AndroidRuntime(20620): at android.os.Handler.handleCallback(Handler.java:739)
04-07 13:36:19.142: E/AndroidRuntime(20620): at android.os.Handler.dispatchMessage(Handler.java:95)
04-07 13:36:19.142: E/AndroidRuntime(20620): at android.os.Looper.loop(Looper.java:135)
04-07 13:36:19.142: E/AndroidRuntime(20620): at android.app.ActivityThread.main(ActivityThread.java:5254)
04-07 13:36:19.142: E/AndroidRuntime(20620): at java.lang.reflect.Method.invoke(Native Method)
04-07 13:36:19.142: E/AndroidRuntime(20620): at java.lang.reflect.Method.invoke(Method.java:372)
04-07 13:36:19.142: E/AndroidRuntime(20620): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
04-07 13:36:19.142: E/AndroidRuntime(20620): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
“我的链接新碎片”活动包含以下内容:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
ActionBar actionBar = getActionBar();
actionBar.setDisplayOptions(actionBar.getDisplayOptions() | ActionBar.DISPLAY_SHOW_CUSTOM);
ImageView imageView = new ImageView(actionBar.getThemedContext());
imageView.setScaleType(ImageView.ScaleType.CENTER);
imageView.setImageResource(R.drawable.logoactionbar);
ActionBar.LayoutParams layoutParams = new ActionBar.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT, Gravity.END | Gravity.CENTER_VERTICAL);
layoutParams.rightMargin = 20;
imageView.setLayoutParams(layoutParams);
actionBar.setCustomView(imageView);
actionBar.setTitle(getResources().getString(R.string.account_anew));
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setIcon(android.R.color.transparent);
getActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.backgroundcolor)));
setContentView(R.layout.link_new)
}
在LINK_New.java内部的BackPressed上,我调用片段:
@Override
public void onBackPressed()
{
super.onBackPressed();
fragment = new LINK_Create();
FragmentManager fragmentManager2 = getSupportFragmentManager();
fragmentManager2.beginTransaction()
.replace(R.id.frame_container, fragment).commit();
}
我尝试了上所有可用的解决方案,因此我无法找到上述问题的解决方案
请帮忙
谢谢 您使用的是片段的片段管理器,而不是活动的片段管理器。因此,请使用活动的 碎片活动:
public void replaceWith(Fragment fragment) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.frame_container, fragment)
.commit();
}
@Subscribe
public void onLinkFragmentBackPressed(LINK_New.BackPressedEvent e) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.frame_container, new LINK_Create())
.commit();
}
片段:
@Override
public void onBackPressed()
{
((YourFragmentActivity)getActivity()).replaceWith(new LINK_Create());
}
@Override
public void onBackPressed() {
SingletonBus.INSTANCE.post(new BackPressedEvent());
}
无论如何,这是问题的快速解决办法
通常我会用Otto发送一个事件
碎片活动:
public void replaceWith(Fragment fragment) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.frame_container, fragment)
.commit();
}
@Subscribe
public void onLinkFragmentBackPressed(LINK_New.BackPressedEvent e) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.frame_container, new LINK_Create())
.commit();
}
片段:
@Override
public void onBackPressed()
{
((YourFragmentActivity)getActivity()).replaceWith(new LINK_Create());
}
@Override
public void onBackPressed() {
SingletonBus.INSTANCE.post(new BackPressedEvent());
}
你确定你的布局没有丢失带有R.id.frame\u容器id的视图吗?或者你调用这个东西太早了。显示的代码正常。请在添加前显示整个onCreate方法和在setContentView中设置的布局fragment@Ziem:布局如片段XML中所示:如果是这样,我不在那里构建容器。主导航抽屉具有框架_Container@EpicPandaForce:不明白您的问题是问链接\创建片段的代码还是片段活动我从中调用链接\创建的活动?看起来您没有理解java文件,或者我想我弄糊涂了,我将再次解释:链接\新建是一个FragmentActivity我想从这里调用或打开链接_Create,这是Fragment-当我在做上述关于我的问题的工作时,我没有得到任何意见。为什么我必须在Fragment内调用OnBackpressed.OnBackpressed在LINK\u New.java内,这是一个fragmentactivity当我按下back按钮时,我想打开LINK\u Create Fragment…..等等,LINK\u New是一个activity,LINK Create是一个Fragment?你真的需要一个更好的命名约定,是的。Link\u NEW是一个FragmentActivity,Link\u Create是Fragment。从Link\u NEW FragmentActivity,我试图通过按后退按钮转到Link\u Create Fragment。这就是我现在被困的地方。