在后退上调用活动中的片段

时间:2014-12-14 03:42:54

标签: android android-fragments

我有一个viewpager,我正在使用FragmentPagerAdapter。现在,FragmentPagerAdapter的tab 0有一个选项,它将用户带到一个片段,称之为片段B - 它在viewpager itslef中用片段B替换了tab 0的片段。这个片段B有一个选项可以打开一个活动,现在当我在活动中按回来时,我想回到标签0,而不是片段B.我如何实现这个目标?

Tab 0的片段调用片段B:

public void onClick(View view) {
                TagFrag f = new TagFrag();

                getFragmentManager().beginTransaction()
                        .add(R.id.note_container, f).addToBackStack(null).commit();
            }

1 个答案:

答案 0 :(得分:2)

更新2:

This Repo通过具体示例(适用于Android Studio 1.0.1)演示此答案

更新1: 注意答案: onActivityResult应放在FragmentB而不是FirstActivity

FragmentTab0 中,添加FragmentB ilike:

getFragmentManager().beginTransaction()
        .add(R.id.note_container, f).addToBackStack(null).commit();

FragmentB 中,使用startActivityForResult

打开第二个活动
Intent intent = new Intent((FirstActivity)getActivity(), SecondActivity.class);
startActivityForResult(intent, 1234); // 1234 is the RequestCode

SecondActivity 中,覆盖onBackPressed

@Override
public void onBackPressed() {
      setResult(Activity.RESULT_OK);
      super.onBackPressed();
}

FragmentB 覆盖onActivityResult并致电[getFragmentManager().popBackStack()] [2]

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 1234) { // previously defined request code
        // Make sure the request was successful
        if (resultCode == RESULT_OK) {
             getFragmentManager().popBackStack(); // magic happens here.
        }
    }
}

享受!