Android Studio: действие заканчивается только при повторном вызове finish () - PullRequest
0 голосов
/ 14 октября 2018

Итак, мы работаем с намерениями в школе, и у меня возникают проблемы с намерениями, когда я пытаюсь передать данные из «Activity2» в «Activity1», когда я выполняю setResult () и прочее.Проблема в том, что он не вернется к первому действию, когда я в первый раз вызову событие, но это будет второе.

Я работаю со студией Android только около 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 голосов
/ 14 октября 2018

Вы звоните 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 метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...