Передача правильной информации предыдущему действию при нажатии кнопки «Назад» - PullRequest
0 голосов
/ 26 июня 2018

Я использую следующий код для реализации кнопки «Назад» на панели инструментов:

super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_series);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar( toolbar );
        Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);

        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(SeriesActivity.this, BowlerActivity.class));
                finish();
            }
        });

Моя проблема в том, что .setNavigationOnClickListener регистрирует щелчок, по которому он возвращается к предыдущему действию минус правильные Боулеры. Когда я иду в серию, я передаю лигу и боулер. Когда я возвращаюсь к BowlerActivity, я ничего не передаю обратно, поэтому получаю следующее:

enter image description hereenter image description hereenter image description here

Боулеры B1 и B2 принадлежат к другой лиге.

Я прошел через несколько различных тем, подобных этой , как переопределить кнопку возврата панели действий в Android? , и я попробовал несколько различных предложений в них. Никто из них не работал для меня.

Как передать leagueId и bowlerId обратно в BowlerActivity, чтобы при запуске я отфильтровывал правильный Боулер из базы данных для отображения в виде списка.

Мне даже нужно передавать эти значения обратно? Любая помощь будет оценена.

1 Ответ

0 голосов
/ 26 июня 2018

Из вашей SeriesActivity вызовите BowlerActivity с помощью метода startActivityForResult ()

Например:

Intent i = new Intent(SeriesActivity.this, BowlerActivity.class);
startActivityForResult(i, 1);

В BowlerActivity установите данные, которые вы хотите вернуть обратно в SeriesActivity. Если вы не хотите возвращаться назад, не устанавливайте ничего.

For example: In BowlerActivity if you want to send back data:

Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();

If you don't want to return data:

Intent returnIntent = new Intent();
setResult(Activity.RESULT_CANCELED, returnIntent);
finish();

Теперь в своем классе SeriesActivity напишите следующий код для метода onActivityResult ().

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 1) {
        if(resultCode == Activity.RESULT_OK){
            String result=data.getStringExtra("result");
        }
        if (resultCode == Activity.RESULT_CANCELED) {
            //Write your code if there's no result
        }
    }
}

Источник => https://stackoverflow.com/a/10407371/9956766

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