我有一个活动,假设Activity_A
调用Activity_B
,而Activity_C
则不显示任何内容都使用startActivityforResult()
。
这些工作正常,用户看不到Activity_b
,并且如果Activity_c
返回正确的return_code Activity_B
根据代码工作
但是如果用户按下“后退”按钮,它会变成一个空的Activity_B
(由于该信息是从Activity_C返回的),然后到Activity_A
,我想要的是如果按下了“后退按钮”,它会变成{{ 1}},否则可以正常工作。我使用Activity_A
使用标志Intent
转到Activity_A
,但是它只是将FLAG_ACTIVITY_REORDER_TO_FRONT
移动到活动列表中的下一个位置。
Activity_B
之前有多个活动,因此使用标志清除顶部无济于事。
我尝试制作一个Activity变量,该变量将调用Activity_A
,finish()
但它只会返回错误的空指针
Activity_C上的代码
onBackPressed()
Activity_B上的代码
使用广播接收器(我认为我的广播接收器实现错误或不起作用)
@Override
public void onBackPressed(){
Intent intent = new Intent(getApplicationContext(),GalleryPreview.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
bg_edit1 abc = new bg_edit1();
startActivityIfNeeded(intent,0);
abc.t1.finish();
// Intent i = new Intent("finish_activity");
// sendBroadcast(i);
finish();
}
尝试Activity / AppCompatActivity方法时出现错误
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals("finish_activity")) {
finish();
}
}
};
registerReceiver(broadcastReceiver, new IntentFilter("finish_activity"));
unregisterReceiver(broadcastReceiver);
答案 0 :(得分:1)
您不需要完成另一个 payload = json.dumps({'long_url': u[1], "domain": "bit.ly" })
。那是错误的方法。要在按下后退按钮时从Activity
直接返回A
,请在C
中进行此操作:
C
通过添加@Override
public void onBackPressed(){
Intent intent = new Intent(this,GalleryPreview.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
}
标志将自动从堆栈中删除活动CLEAR_TOP
。通过添加B
标志,可以确保将使用SINGLE_TOP
的现有实例,而不是A
的新实例。
您也不需要在活动A
中使用BroadcastReceiver
。