单击按钮时,关闭当前活动和上一个活动

时间:2018-06-21 13:11:11

标签: android

假设有3个活动:

Activity A  
Activity B  
Activity C  

然后在活动C上,有一个按钮FinishButton
因此,我要在活动C上执行的操作是:
1.如果按下后退按钮,活动C将关闭,然后我们将看到活动B(就像正常行为一样)
2.如果我按FinishButton,活动B和活动C将关闭,那么我们将看到活动A

有办法吗?
我做了一些研究,但只是找到一种方法来结束所有以前的活动。

1 个答案:

答案 0 :(得分:2)

您可以结合使用startActivityForResultsetResult()

启动活动C时,请使用startActivityForResult启动它,然后在活动C中将结果设置为RESULT_CANCELED。在活动B中检查该标志。如果确定,则什么也不做,但是如果其RESULT_CANCELED,则只需完成活动B。

您可以按以下方式实现它:

ActivityB.java

public class ActivityB extends AppCompatActivity{
    Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        //initialize btn;
         btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivityForResult(new Intent(ActivityB.this,ActivityC.class),100); 
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == 100){
            if(resultCode == RESULT_OK){
                //Do nothing
            } else if (resultCode == RESULT_CANCELED) {
                finish();
            }
    }
    }
}

ActivityC.java

public class ActivityC extends AppCompatActivity{
    Button btnFinish;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        //initialize btnFinish;
         btnFinish.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               setResult(RESULT_CANCELED);
               finish();
            }
        });
    }
    @Override
    public void onBackPressed() {
        setResult(RESULT_OK);
        finish();
    }
}