从Activity移动到片段

时间:2016-08-28 18:33:43

标签: android android-fragments android-intent

我有一个片段说F1,从那里我打开一个活动说A1,然后在那个活动(A1)之后我打开其他活动({{1}我的任务在我的活动(A2)结束后,我现在正在A2执行一些任务我想要销毁当前打开的活动并移回我的片段A2

这就是我想要回到我的片段:

F1

但是我收到了这个错误: Intent intent = new Intent(context, myFragment.class); overridePendingTransition(0, 0); intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); finish(); startActivity(intent);

我知道为什么我得到这个(因为指定的类不是一个片段的活动)但我的问题是我怎么能回到那个片段?

2 个答案:

答案 0 :(得分:1)

您无法有意图启动片段。您的每个片段都将附加到某些活动中。碎片可以在活动中替换或添加,

你可以做的是:你的片段F1附加到一些活动......比如说A0。所以你能做的就像这样:

  Intent intent = new Intent(context, A0.class);
intent .putExtra("openF2",true)
    overridePendingTransition(0, 0); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    finish(); 
    startActivity(intent); 

然后,在您的活动A0的onCreate中,您可以检查要替换的片段:

public void onCreate(Bundle savedInstanceState){
Bundle extras = getIntent().getExtras();
 if(extras!=null && extras.containsKey("openF2"))
  boolean openF2 = extras.getBoolean("openF2");
if(openF2){
  //add or replace fragment F2 in container
 }
}

这只是伪代码。我希望你能理解它。

修改:如果您要移回上一个片段,可以显式调用活动的onBackPress()两次以返回您的活动说A0,其中包含该片段。不过不是一个好主意。

答案 1 :(得分:0)

将以下代码放在您要移动的活动中。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^customer.mydomain1.com
RewriteRule ^(.*) http://customer.mydomain2.com/$1 [P]

并在你的活动中将代码放在oncreate方法中,你已经附加了所有碎片。

    try {Process su = Runtime.getRuntime().exec("su");
        DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());
        outputStream.writeBytes(cmd+"\n");
        outputStream.flush();
        outputStream.writeBytes("exit\n");
        outputStream.flush();
        su.waitFor();

    } catch (IOException e) {

        throw new RuntimeException(e);

    } catch (InterruptedException e) {

        throw new RuntimeException(e);
    }

这适合你。