我有一个片段说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);
我知道为什么我得到这个(因为指定的类不是一个片段的活动)但我的问题是我怎么能回到那个片段?
答案 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);
}
这适合你。