android - 从 fragment 调用 Activity

标签 android android-fragments

如果这是一个愚蠢的问题,我们深表歉意。我已经搜索了我的问题的答案,虽然我发现多次提到这个问题,但所提出的解决方案都没有解决我的问题。 在我的应用程序中,我从 fragment 调用 Activity ,然后我想通过在 Activity 中单击按钮返回到该 fragment 。 1 - 在 fragment Discover_Fragment 中,我有一个 ListView ,当按下一个项目时,Activity EditThoughts 开始:

 lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1,
                                    int position, long arg3) {
                Intent intent1 = new Intent(getActivity(), EditThought.class);
                startActivity(intent1);
            }
        });

Activity EditThoughts 开始时没有任何问题。 2 - 然后,当我想从 Activity EditThought 返回 fragment (Discover_Fragment) 时,我使用以下命令:

                    FragmentManager fragmentManager = getSupportFragmentManager();
                    Discover_Fragment fragmentS1 = new Discover_Fragment();
                    fragmentManager.beginTransaction()
                            .replace(R.id.containerView, fragmentS1)
                            .commit();

我得到一个错误:

java.lang.IllegalArgumentException: No view found for id 0x7f0e006e (com.appleia.vocapp:id/containerView) for fragment Discover_Fragment{f1e7d01 #0 id=0x7f0e006e}

R.id.containerView是activity_main中FrameLayout的id:

       <FrameLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/containerView">
       </FrameLayout>

Discover_Fragment 的布局是:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/toplayout"
    android:orientation="horizontal"

    >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:id="@+id/topButtons"
        android:gravity="center"
        android:layout_weight="1">


        <com.appleia.SegmentedButtons.SegmentedRadioGroup
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dip"
            android:orientation="horizontal"
            android:id="@+id/segment_text"
            android:checkedButton="@+id/button_one"
            android:gravity="center">
            <RadioButton android:id="@id/button_one"
                android:layout_height="wrap_content"
                android:layout_width="110dp"
                android:minWidth="110dp"
                android:minHeight="33dip"
                android:text="@string/Articles"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:button="@null"
                android:gravity="center"
                android:textColor="@drawable/radio_colors" />
            <RadioButton android:id="@+id/button_two"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:minWidth="0dp"
                android:minHeight="33dip"
                android:text="Two"
                android:button="@null"
                android:gravity="center"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textColor="@drawable/radio_colors"
                android:visibility="gone"/>
            <RadioButton android:id="@+id/button_three"
                android:layout_height="wrap_content"
                android:layout_width="110dp"
                android:minWidth="110dp"
                android:minHeight="33dip"
                android:text="@string/Toughts"
                android:button="@null"
                android:gravity="center"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textColor="@drawable/radio_colors" />
        </com.appleia.SegmentedButtons.SegmentedRadioGroup>

    </LinearLayout>

</LinearLayout>
<ListView
    android:layout_below="@+id/toplayout"
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
</ListView>

</RelativeLayout>

我做错了什么? 提前致谢。

最佳答案

您可以通过调用startActivityForResult (Intent intent, int requestCode)来启动Activity docs here . 之后,您可以使用 onBackPressed 返回 Activity 。如果您想将任何数据传回 Activity,则可以使用 setResult (int resultCode, Intent data) 函数。 More information is here

请注意,如果您想将数据返回给 Activity 类,那么您应该调用 getActivity().startActivityForResult (Intent intent, int requestCode)

或者,如果您需要将数据返回给 fragment 类本身,只需使用 startActivityForResult (Intent intent, int requestCode)。它将返回到该 fragment 中的 onActivityResult

关于android - 从 fragment 调用 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37046863/

相关文章:

android - fragment 作为 Android 中的单例

android - 如何修复由目的地引起的膨胀错误不是此 NavGraph 的直接子级

android - 另一个 fragment 内的谷歌地图 - 调用 getMapAsync 时出错

android gradle 测试路径

Android Firebase ML-Kit 通过摄像头实时检测条码

android - 膨胀成 "this"?

java - 从 Activity 访问 ViewPager Fragment 方法

android - fragment Activity : proper fragment instantiation

android - 一项 Activity 的两种不同布局

从搜索中启动 Android Activity