为了账号安全,请及时绑定邮箱和手机立即绑定

完成另一个活动的活动

完成另一个活动的活动

子衿沉夜 2019-08-02 15:01:19
完成另一个活动的活动我想完成另一项活动的一项活动,例如:在活动[A]中,在按钮单击时,我调用活动[B]而不完成活动[A]。现在在Activity [B]中,有两个按钮,New和Modify。当用户点击修改然后从堆栈中弹出活动[A]并勾选所有选项。但是当用户单击Activity [B]中的New按钮时,我将不得不从堆栈中完成Activity [A]并再次将Activity [A]重新加载到堆栈中。我正在尝试,但我无法从堆栈中完成活动[A] ......我怎么能这样做?我使用的代码如下:来自活动[A]:Intent GotoB = new Intent(A.this,B.class);startActivityForResult(GotoB,1);同一活动中的另一种方法public void onActivityResult(int requestCode, int resultCode, Intent intent) {     if (requestCode == 1)     {         if (resultCode == 1) {             Intent i = getIntent();             overridePendingTransition(0, 0);             i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);             finish();             overridePendingTransition(0, 0);             startActivity(i);         }     }}在活动[B]中,点击按钮:setResult(1);finish();
查看完整描述

3 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

  1. 在清单文件中创建活动A: launchMode = "singleInstance"

  2. 当用户单击新建时,请执行FirstActivity.fa.finish();并调用新的Intent。

  3. 当用户单击修改时,调用新的Intent或简单地完成活动B.

第一种方式

在你的第一个活动中,声明一个Activity object这样的,

public static Activity fa;onCreate(){
    fa = this;}

现在在另一个中使用该对象Activity来完成这样的第一个活动,

onCreate(){
    FirstActivity.fa.finish();}

第二种方式

在您FirstActivity继续前往调用您想要完成的活动时,您可以在呼叫时添加标记FirstActivity

intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

但是使用此标志即使您不希望活动也会完成。有时onBack如果你想表明FirstActivity你必须使用意图来调用它。


查看完整回答
反对 回复 2019-08-02
?
郎朗坤

TA贡献1921条经验 获得超9个赞

你可以做,但我认为你不应该打破正常的活动流程。如果您想完成活动,那么您只需将活动B的广播发送到活动A.

在开始活动B之前创建广播接收器:

BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context arg0, Intent intent) {
        String action = intent.getAction();
        if (action.equals("finish_activity")) {
            finish();
            // DO WHATEVER YOU WANT.
        }
    }};registerReceiver(broadcastReceiver, new IntentFilter("finish_activity"));

当您想要从B完成活动A时,将活动B的广播发送到活动A.

Intent intent = new Intent("finish_activity");sendBroadcast(intent);

我希望它对你有用......


查看完整回答
反对 回复 2019-08-02
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

这是一个相当标准的沟通问题。一种方法是在活动A中使用ResultReceiver:

Intent GotoB=new Intent(A.this,B.class);GotoB.putExtra("finisher", new ResultReceiver(null) {
    @Override
    protected void onReceiveResult(int resultCode, Bundle resultData) {
        A.this.finish();
    }});startActivityForResult(GotoB,1);

然后在活动B中你可以按需完成它,如下所示:

((ResultReceiver)getIntent().getExtra("finisher")).send(1, new Bundle());

尝试类似的东西。


查看完整回答
反对 回复 2019-08-02
  • 3 回答
  • 0 关注
  • 379 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信