当前位置: 首页 > 知识库问答 >
问题:

Android中一个活动添加两个片段

夏侯华彩
2023-03-14

我想在Android的一个活动中添加两个片段。但在加法时,它给出了错误;

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.namal.fragments.MainActivity">


    <fragment
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:name="com.example.namal.fragments.Pie1"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="37dp"
        android:layout_marginBottom="20dp"
        android:id="@+id/fragment" />

    <fragment
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:name="com.example.namal.fragments.Pie2"
        android:layout_below="@+id/fragment"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:id="@+id/fragment2" />
</RelativeLayout>
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Pie1 firstFragment = new Pie1();

        FragmentManager fm = getSupportFragmentManager();
        Fragment fragment = fm.findFragmentById(R.id.activity_main);

        if (fragment == null) {
            fm.beginTransaction()
                    .add(R.id.fragment, firstFragment)
                    .commit();

            Pie2 secondFragment = new Pie2();
            fm.beginTransaction()
                    .add(R.id.fragment2, secondFragment)
                    .commit();
        }
    }
}

片段的布局1

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorAccent"
   >

    <!-- TODO: Update blank fragment layout -->
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/hello_blank_fragment" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="hello_blank_fragment 2" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="hello_blank_fragment 3" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="hello_blank_fragment 4" />

</FrameLayout>

片段2的布局

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorPrimaryDark"
    tools:context="com.example.namal.fragments.Pie2">

    <!-- TODO: Update blank fragment layout -->
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="hello_blank_fragment 5" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="hello_blank_fragment 6" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="hello_blank_fragment 7" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="hello_blank_fragment 8" />

</FrameLayout>

共有1个答案

昝浩阔
2023-03-14
Caused by: java.lang.RuntimeException:
    com.example.namal.fragments.MainActivity@1602e5b8 must implement OnFragmentInteractionListener
    at com.example.namal.fragments.Pie1.onAttach(Pie1.java:83)

您需要使活动实现OnFragmentInteractionListener

public class MainActivity extends AppCompatActivity implements OnFragmentInteractionListener {
 类似资料:
  • 我有一个疑问,想澄清一些关于包含多个片段的活动的观点。 我有10个片段与一个活动(HomeActivity.java)相连;此活动包含一个导航抽屉和工具栏,带有多个图标,如搜索、添加、删除、后退按钮等。 我遵循的结构如下:, 用户点击抽屉菜单中的任何项目,我正在加载片段, 碎片加载- 我正在根据HomeActivity本身中的片段更改标题名称,基于工具栏。 我的导航抽屉项目只有一个片段,在frag

  • 我对Android应用程序很陌生,所以我希望能在这里找到一些帮助。我已经在这里搜索了我的问题并找到了一些东西,但这不起作用。 我想向FrameLayout添加一个片段,但它不起作用。我的目标是创建一个框架(/框架?)这总是存在的,用户可以与它交互,在这个框架内的一个特定的“窗口”中,我想显示页面/片段,总共五个,并且能够随时切换页面/片段,所以我有一个始终存在的框架,在这个动态变化的页面内。但现在

  • 我读过很多关于这方面的文章,但也有2012年或更早的文章。 (我只是打算从数据库中读取和插入一些数据。)

  • 你好, 我有MainActivity,TitlesFragment和DelessFragment。 我的MainActivity将显示TitlesFragment,当用户单击标题时,TitlesFragment将被DetailsFragment替换。那很好。然而,当我将DetailsFragment添加到addToBackStack时。当我点击后退按钮时,它会关闭应用程序,而不是显示标题碎片。 我

  • 在我的应用程序中,我使用了一个活动和两个片段。该应用程序使用带有容器的布局,因此片段是通过事务添加的。第一个片段包含列表视图,另一个片段包含列表视图项的详细视图。两个片段都使用setRetainInstance(true)。片段是通过替换事务添加的,并设置了addToBackStack(null)。列表片段包含一个实例变量,其中包含列表的一些信息。现在我正在切换到详细并按回,实例变量为null。我