从活动中返回一个片段

时间:2014-05-29 06:54:48

标签: android android-intent android-activity fragment

我在Activity C中有三个片段,它们表现为制表符。我必须从一个片段转到一个新的Activity X.现在我想回到Activity X的片段。

我已经覆盖onBackPressed,但不知道如何从Activity返回fragment / not fragmentActivity。

如果我想回到另一个活动的活动,我会在后退时覆盖并使用意图调用该活动...

我想做这样的事情..这段代码是为了回到之前的活动

@Override
public void onBackPressed()
{

    Intent intent = new Intent(CurrentActivity.this,ActivityYouLikeToGo.class);

    intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

    startActivity(intent);
}

先谢谢..

10 个答案:

答案 0 :(得分:5)

首先,覆盖背面按以转到片段所在的活动: -

@Override
public void onBackPressed()
{

    Intent intent = new Intent(CurrentActivity.this,ActivityYouLikeToGo.class);

    intent.putExtra("Check",1);
    startActivity(intent);
}

然后转到ActivityYouLikeToGo.java文件并在onCreate中执行此操作: -

Intent intent = getIntent();
String s1 = intent.getStringExtra("Check");

if(s1.equals("1"))
  {
s1 = "";
Fragment fragment = new YOURFRAMENTNAME();
if (fragment != null) {
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.frame_container, fragment).commit();
  }
}

答案 1 :(得分:4)

您可以添加TAG(基本上是片段的字符串名称),然后使用findFragmentByTag().加载片段

findFragmentByTag()的Google文档为here

或者您也可以addToBackStack()FragmentTransaction调用片段,文档链接here。 来自谷歌文档:

  

“通过调用addToBackStack(),替换事务被保存到   返回堆栈,以便用户可以反转事务并将其恢复   按“返回”按钮可以显示上一个片段。“

答案 2 :(得分:4)

最简单的方法:

@Override
onBackPressed(){
finish();
}

答案 3 :(得分:1)

从片段开始活动时,片段从未被杀死, 您可以通过finish()终止当前活动,简单地返回片段; 就像从片段中打开活动并按返回按钮时一样 您跳到片段而不会丢失数据。

答案 4 :(得分:0)

  

如果我想回到一个活动到另一个活动,我覆盖   后退并使用意图调用actvity

通常情况下,如果你想回去,你就不必做某事。按设备的硬件后退按钮将转到上一个活动,并且已打开相应的选项卡。

答案 5 :(得分:0)

您可以使用startActivityForResult()启动要导航到的活动,然后在返回上一个活动时设置结果。在您要返回的活动中,根据结果代码显示片段。您可以通过隐藏您不想显示的所有片段来完成此任务。即使你要从另一个片段转到另一个活动,这也可以工作。

答案 6 :(得分:0)

在您从片段开始的活动中,您可以执行以下操作:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        //do whatever you want here
        finish();
        return true;
    }

这对我有用:)

答案 7 :(得分:0)

此代码适用于我的情况。我只是在按钮上创建一个Onclick方法。代码如下:我在Button中创建了onclick方法clickForFriends,Id是backFriendsList,而我使用的是android.support.v4.app.Fragment类。这个方法应该从新的Activity中取回来自Activity的片段,这个方法应该在onCreate方法之后的Activity中

 public void clickedForFriends(View v){
    if (v.getId() == R.id.backFriendsList){
       onBackPressed();
    }
}

答案 8 :(得分:0)

enter image description here

@Override
public void onBackPressed() {
  //Here "digiM" is an Actionbar Title
    if(getTitle().equals("digiM") || getSupportActionBar().getTitle().equals("digiM"))
    {
        //reload the activity if you want to open it again as your need
        Intent intent = new Intent(Your_Current_Activity.this,Your_Current_Activity.class);
        startActivity(intent);
    }
}

如果该片段中有操作栏,则可以在Activity中onBackPressed()上检查包含类似方法的操作栏标题。

答案 9 :(得分:-1)

viewPager.setCurrentItem(tabPosition);

这个解决方案对我来说很奇怪。