在android中:如何使用选项卡栏中的片段活动调用另一个片段
在选项卡栏活动中使用片段。我有树选项卡,需要在同一选项卡中加载以下类片段在android中:如何使用选项卡栏中的片段活动调用另一个片段,android,android-fragments,android-tabhost,Android,Android Fragments,Android Tabhost,在选项卡栏活动中使用片段。我有树选项卡,需要在同一选项卡中加载以下类片段 public class FindFragmentActivity extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflat
public class FindFragmentActivity extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.findpartner_list_activity,container, false);
return rootView;
}
}
我尝试了以下代码来调用片段:
FindFragmentActivity fragment = new FindFragmentActivity();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.layout.activity_mypartner_view,fragment);
fragmentTransaction.commit();
日志:
05-08 18:52:17.755: E/AndroidRuntime(4021): FATAL EXCEPTION: main
05-08 18:52:17.755: E/AndroidRuntime(4021): java.lang.IllegalArgumentException: No view found for id 0x7f030003 (com.tech.cf:layout/findpartner_list_activity) for fragment FindFragmentActivity{417a2390 #1 id=0x7f030003}
05-08 18:52:17.755: E/AndroidRuntime(4021): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:919)
05-08 18:52:17.755: E/AndroidRuntime(4021): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
05-08 18:52:17.755: E/AndroidRuntime(4021): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
05-08 18:52:17.755: E/AndroidRuntime(4021): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
05-08 18:52:17.755: E/AndroidRuntime(4021): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
05-08 18:52:17.755: E/AndroidRuntime(4021): at android.os.Handler.handleCallback(Handler.java:730)
05-08 18:52:17.755: E/AndroidRuntime(4021): at android.os.Handler.dispatchMessage(Handler.java:92)
05-08 18:52:17.755: E/AndroidRuntime(4021): at android.os.Looper.loop(Looper.java:137)
05-08 18:52:17.755: E/AndroidRuntime(4021): at android.app.ActivityThread.main(ActivityThread.java:5103)
05-08 18:52:17.755: E/AndroidRuntime(4021): at java.lang.reflect.Method.invokeNative(Native Method)
05-08 18:52:17.755: E/AndroidRuntime(4021): at java.lang.reflect.Method.invoke(Method.java:525)
05-08 18:52:17.755: E/AndroidRuntime(4021): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
05-08 18:52:17.755: E/AndroidRuntime(4021): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
05-08 18:52:17.755: E/AndroidRuntime(4021): at dalvik.system.NativeStart.main(Native Method)
应用程序崩溃。我如何在选项卡栏内容中调用和加载
编辑:
code:
getFragmentManager().beginTransaction()
.replace(R.id.layout_partnerlistview, new FindFragmentActivity())
.commit();
Layout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_partnerlistview"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/logo"
android:layout_width="fill_parent"
android:layout_height="100dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:orientation="horizontal" >
.
.
.
</LinearLayout>
</RelativeLayout>
代码:
getFragmentManager().beginTransaction()
.replace(R.id.layout_partnerlistview,new FindFragmentActivity())
.commit();
布局:
.
.
.
这也会导致相同的错误(找不到视图)。
片段
不能称为活动
,它们只能通过片段管理器
初始化,因此这段代码毫无意义:
Intent intent = new Intent(getActivity(),FindFragmentActivity.class);
getActivity().startActivity(intent);
活动
承载的是片段
,因此您的意图应该包括对相应的活动
的显式/隐式引用,并且在它的onCreate
中,您可以调用所需的片段。另外,FragmentTransaction的
方法也可以链接:
getFragmentManager().beginTransaction()
.replace(R.id.<my container>, new FindFragmentActivity())
.commit();
getFragmentManager().beginTransaction()
.替换(R.id.,新的FindFragmentActivity())
.commit();
编辑
第一次尝试是正确的(使用
FragmentManager
),但有一个小错误。对于replace
方法的第一个参数,您不应提供布局id,而应提供活动现有布局中的视图id(R.id.myView),该视图将承载您的片段。例如,看一看帮助的金科玉律:如果您发生崩溃,请始终发布日志。您的ans也会崩溃应用程序。logcat是上述问题。@chimbu这是活动的布局,其中托管了FindFragmentActivity
?您在创建时调用过setContentView()吗?这不是它的活动片段。