Подтвердить что ты не робот

Проверьте, была ли нажата обратная клавиша в андроиде?

Скажите, что я нахожусь на своем основном мероприятии, и я начинаю новую деятельность.

MainActivity > NewActivity

И из NewActivity Я нажимаю клавишу

MainActivity < NewActivity

Я хочу, чтобы MainActivity что-то делал, если он отображается после NewActivity закрыт, но не тогда, когда MainActivity запускается нормально, например, при первом запуске приложения. Кто-нибудь знает, возможно ли это?

4b9b3361

Ответ 1

Несколько идей:

  • Вы можете просто установить флаг в MainActivity, когда он запускает NewActivity.
  • Вы можете вызвать startActivityForResult из MainActivity и организовать NewActivity, чтобы установить результат, который вы получите в MainActivity.onActivityResult(), когда заканчивается NewActivity.

Ответ 2

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
        Log.d(this.getClass().getName(), "back button pressed");
    }
    return super.onKeyDown(keyCode, event);
}

@Update. Если вы хотите получать уведомления о завершении работы NewActivity, вам необходимо запустить его с помощью startActivityForResult (Intent, requestCode). Затем вы должны переопределить onActivityResult() в MainActivity. Проверьте здесь параметр requestcode, если код возврата равен коду отправки (при запуске childActivity), поместите некоторый код, чтобы сделать свой бизнес.

int MYCODE=1000;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // Result OK.d.
    if (requestCode == MYCODE) {
        // do something good
    }
}

Ответ 3

Я пытаюсь использовать метод ниже, чтобы обнаружить кнопку "Назад", нажатую на панели действий в действии по первому методу, а вторая - на обнаружение кнопки мобильного оборудования или кнопку активации активности.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case android.R.id.home:
            onBackPressed();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

@Override
public void onBackPressed() {
    setResult(RESULT_CANCELED);
    super.onBackPressed();
}

Ответ 4

Вы можете переопределить метод onBackPressed() в NewActivity, который обнаружит, когда нажата кнопка возврата. А затем, чтобы сообщить об этом в MainActivity, вы можете отправить булевский флаг в комплекте, чтобы MainActivity обнаружил, что его открытие после NewActivity.

В NewActivity:

       @Override
       public void onBackPressed() {
                boolean fromNewActivity=true;

        Intent mainIntent = new Intent(view.getContext(), MainActivity.class);
        Bundle bundleObj = new Bundle();
        bundleObj.putString("fromNewActivity", Boolean.toString(fromNewActivity));
        mainIntent.putExtras(bundleObj);
        startActivityForResult(mainIntent, 0);
           }

В MainActivity в методе onCreate():

       Bundle extras = getIntent().getExtras();
       boolean fromNewActivity =Boolean.parseBoolean( extras.getString("fromNewActivity"));

Теперь вы можете проверить, открывается ли MainActivity после NewActivity или нет.

Ответ 5

При запуске NewActivity вам нужно использовать startActivityForResult и использовать действительный requestId. Такой requestId будет передан вам на onActivityResult после завершения NewActivity.