我刚刚学习android,我有一个主要活动的应用程序在启动时使用片段管理器添加片段。然后,程序在两个片段之间切换以执行其功能,再次使用片段管理器来替换片段。
我希望这个应用程序在大屏幕上显示两个片段。我如何
A)检测到有大屏幕
和
B)如果是这种情况,主活动是否将两个片段加载到单个活动中?
每个片段都有布局,主要活动的布局只是一个空白的framelayout,在onCreate期间填充了一个片段。请记住:有两个片段和一个活动。活动使用片段管理器将片段加载到其容器中。
答案 0 :(得分:4)
A)要检测大屏幕,您可以使用此代码
public static boolean isTablet(Context context) {
return (context.getResources().getConfiguration().screenLayout
& Configuration.SCREENLAYOUT_SIZE_MASK)
>= Configuration.SCREENLAYOUT_SIZE_LARGE;
}
如果设备在大屏幕上运行,将返回true。 另请检查this link
B)通过代码添加片段,可以在同一个活动上有两个片段。 在主布局中有2个布局,这两个布局将是两个片段的容器。如果屏幕尺寸适合您,则通过代码将片段添加到每个片段中。 使用此代码。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:orientation="vertical"
android:layout_height="fill_parent">
<RelativeLayout
android:id="@+id/FragmentContainer1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<RelativeLayout
android:id="@+id/FragmentContainer2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
然后添加片段。
fragmentTransaction.add(R.id.FragmentContainer1, fragment);
fragmentTransaction.add(R.id.FragmentContainer2, fragment);
检查this link以获得Lars Vogel的精彩教程。
答案 1 :(得分:0)
如何检测到有大屏幕?
解决方案 -
让应用程序检测是否有大屏幕。
阅读 - Multiple Screen Support和Support Screen training docs。
如何让主要活动将两个片段加载到单个活动中 如果是这样的话?
解决方案 -
您可以在单个活动中组合多个片段,以构建多窗格UI并在多个活动中重用片段。当您在不同的布局中定义片段容器时,这非常有用。您只需要替换任何布局中的任何其他片段。
当您导航到当前布局时,您拥有该容器的ID以将其替换为您想要的片段。
您还可以使用backStack
方法返回popBackStack()
中的上一个片段。为此,您需要使用addToBackStack()
在堆栈中添加该片段,然后使用commit()进行反映。这与当前的电流相反。
说明强>
在活动中创建两个片段的步骤 -
1 您将使用Eclipse IDE创建一个Android应用程序,并在MyFragments
包下将其命名为com.example.myfragments
,并显示空白的活动。
2 修改主要活动文件MainActivity.java
,如下所示。在这里,我们将检查设备的方向,因此我们将在不同的片段之间切换。
3 在com.example.myfragments包下创建两个java文件PM_Fragment.java和LM_Fragement.java,以定义您的片段和相关方法。
4 创建布局文件res/layout/lm_fragment.xml
和res/layout/pm_fragment.xml
,并为这两个片段定义布局。
5 修改res/layout/activity_main.xml
文件的详细内容以包含这两个片段。
6 在res/values/strings.xml
档案中定义所需的常量
7 运行应用程序以启动Android模拟器并验证应用程序中所做更改的结果。