从BackBacked上的另一个活动中完成活动

时间:2019-07-30 11:53:39

标签: android android-intent android-activity

我有一个活动,假设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_Afinish() 但它只会返回错误的空指针

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);

1 个答案:

答案 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