所以我基本上在'DemosFragment'中有一个按钮,当我点击它时,我希望它打开另一个片段(SettingsFragment),我现在明白我需要一个活动来解决这个问题,因为该按钮目前有一个onClick使用intent / startActivity的方法,那么我将如何创建一个只保存我的片段的活动?我知道这可能听起来很奇怪我写的方式,我刚刚开始Android开发,但基本上我有一个片段,因为我想要一个片段有一个按钮来打开另一个片段,我想我需要一个片段的活动我是试图打开,那么如何创建该活动以及我需要将其放入其中?感谢。
答案 0 :(得分:0)
您需要具有以下代码的活动:
public class ShowFragmentActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_fragment);
}
}
您还必须在res / layout文件夹中创建名为activity_show_fragment.xml的布局xml文件:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment class="com.example.yourFragmentsClassName"
android:id="@+id/fragment_id"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
这应该只用于显示你的片段。 要启动活动,请将此代码粘贴到按钮的onClick方法中:
Intent i = new Intent(this, ShowFragmentActivity.class);
startActivity(i);
查看官方文档总是一个很好的决定:http://developer.android.com/reference/android/app/Fragment.html。 希望有所帮助!
答案 1 :(得分:0)
哇!你的问题需要一个很长的答案,然而这是一个很好的做法(也是疯狂的),Fragments不能在彼此之间进行通信,但它们可以由一个Activity托管;在这种情况下,Activity可以管理它们之间的通信流(片段),并且可以通过多种方式开发,Bundle,Intent和Handler。在这里查看ufficial Android文档:
http://developer.android.com/training/basics/fragments/index.html
答案 2 :(得分:0)
有关构建灵活用户界面的android docs部分是如何从Fragment
开始/加载Activity
的一个很好的示例。在该示例中,您将看到FrameLayout
XML中的Activity
被用作片段容器。这将是显示所有片段的View
。
使用FragmentTransaction
加载片段时,片段布局的内容将显示在容器视图中。在上面引用的示例中,这是使用android支持库中包含的SupportFragmentManager
类进行的,以便在早期版本的操作系统中促进片段事务。 SupportFramgnetManager要求您扩展FramentActivity
而不仅仅是Activity
。如果您不担心向后兼容性并且正在扩展活动,而不是片段活动,则可以简单地使用getFragmentManager()。
getFragmentManager().beginTransaction()
.add(R.id.fragment_container, firstFragment).commit();
在初始添加事务之后,您可以使用片段事务的replace方法在片段之间切换。替换完全听起来像它,它将一个片段换成另一个片段。要在你的firstframgnet中使用
完成此任务 SecondFragment secondFragment = new SecondFragment();
getActivity().getFragmentManager().beginTransaction()
.replace(R.id.fragment_container, secondFragment).commit();
请注意,我在片段中使用了getActivity()。这允许您引用主机活动的上下文来访问片段管理器。当您在活动中时,您不需要使用getactivity,因为片段管理器已经可以从该上下文访问。