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

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


我只在 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;

                    }

                });

    }

如果有人可以提供帮助,我会很高兴,同时我会尝试自己解决。谢谢!


温温酱
浏览 204回答 1
1回答

catspeake

您正在调用 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方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java