如果这是一个愚蠢的问题,我们深表歉意。我已经搜索了我的问题的答案,虽然我发现多次提到这个问题,但所提出的解决方案都没有解决我的问题。 在我的应用程序中,我从 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/