Android Studio:活动仅在您第二次调用finish()时结束

时间:2018-10-13 21:08:48

标签: java android android-intent

因此,我们在学校处理意图时,当我尝试执行setResult()和东西时,当我尝试将数据从“ Activity2”传递到“ Activity1”时,我遇到了意图问题。问题在于,当我第一次触发该事件时,它不会回到第一个活动,但是会第二次。

我与Android Studio的工作仅约12小时,因此我真的缺乏很多了解。

这是我在做什么:

首先,我将此表称为主要活动。

public void CheckPassword(View view) {
        password = PasswordManagement.getPassword(this);
        TextView txtPassword = findViewById(R.id.txtPassword);

        if (txtPassword.getText().toString().equals(password)) {
            Intent intent;
            intent = new Intent(this, WelcomeActivity.class);
            intent.putExtra("password", password);
            startActivityForResult(intent, 1);
            startActivity(intent);
        } else {
            Intent intent;
            intent = new Intent(this, RestrictedActivity.class);
            startActivityForResult(intent, 1);
            startActivity(intent);

        }

    }

然后,当我完成第二个活动时,运行以下命令:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_restricted);

        lblRestrictedArea = findViewById(R.id.lblRestrictedArea);
        lblRestrictedArea.setOnLongClickListener(
                new OnLongClickListener() {
                    public boolean onLongClick(View view) {
                        intent = new Intent();
                        intent.putExtra(EXTRA_RESPONSE, true);
                        setResult(RESULT_OK, intent);
                        finish();
                        return false;
                    }
                });
    }

回到主要活动,我改写了这个内容以根据响应进行操作:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            if (requestCode == 1) {
                if (data.getBooleanExtra(RestrictedActivity.EXTRA_RESPONSE,false)){
                    LinearLayoutPasswordActivity.setBackgroundColor(getResources().getColor(R.color.red));
                }else{
                    LinearLayoutPasswordActivity.setBackgroundColor(getResources().getColor(R.color.white));
                }

            }
        }
    }

如果有人可以帮助我,我将非常高兴,与此同时,我将尝试自行解决。 谢谢!

1 个答案:

答案 0 :(得分:0)

您两次调用startActivity。因此,有两个相同的Activity实例,然后您必须完成两次。

保留您的startActivityForResult(...)并删除startActivity中的CheckPassword(View view)

->

public void CheckPassword(View view) {
    password = PasswordManagement.getPassword(this);
    TextView txtPassword = findViewById(R.id.txtPassword);

    if (txtPassword.getText().toString().equals(password)) {
        Intent intent;
        intent = new Intent(this, WelcomeActivity.class);
        intent.putExtra("password", password);
        startActivityForResult(intent, 1);
        // startActivity(intent);
    } else {
        Intent intent;
        intent = new Intent(this, RestrictedActivity.class);
        startActivityForResult(intent, 1);
        //startActivity(intent);
    }
}

此外,请注意,您在两个不同的活动中使用相同的requestCode(1)。 requestCode对于onActivityResult方法非常重要。