Кнопка отмены Android - PullRequest
       2

Кнопка отмены Android

1 голос
/ 08 марта 2012

У меня есть (настраиваемый) просмотр списка в Activity1.Когда я нажимаю на строку, Activity2 открывается с другим (настраиваемым) представлением списка.В строках обоих списков просмотра есть пара объектов: imageview, checkbox, textview.
Когда я установил все флажки в флажок Activity2 и нажал кнопку BACK моего телефона, флажок соответствующей строки впросмотр списка должен быть проверен.Однако, когда я нажимаю кнопку BACK, ничего не происходит (проверено Logcat, нет новых строк, нет журналов, ничего).
Поэтому я решил переопределить кнопку BACK, поэтому, когда я нажимаю на нее, должна открыться Activity1.

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
      Intent intentstart = new Intent(Activity2.this, Activity1.class);
      startActivity(intentstart);
      return true;
    }
    return super.onKeyDown(keyCode, event);    
 }

Это работает, но у меня есть сомнения.Это хорошее решение?Есть ли лучшее решение?Потому что это убивает нормальное поведение BACK.

НОРМАЛЬНОЕ ПОВЕДЕНИЕ:

  1. Открывается Activity1.Я нажимаю на строку -> Активность2 открывается.Я нажимаю назад -> Я вижу Activity1.Я нажимаю на строку -> Activity2 открывается ....... после игры в течение нескольких минут, и я нахожусь в Activity1, я нажимаю назад и я на открытом экране моего приложения.

НОВОЕ ПОВЕДЕНИЕ:

  1. Активность1 открывается.Я нажимаю на строку -> Активность2 открывается.Я нажимаю назад -> Я вижу Activity1.Я нажимаю на строку -> Activity2 открывается ....... после игры в течение нескольких минут, и я нахожусь в Activity1, я нажимаю назад и Activity2 открывается.Затем вернитесь снова -> Activity1 откроется.Затем снова откройте-> Activity2 откроется и так далее, пока я не откатлю все ранее открытые активности.

Ответы [ 2 ]

0 голосов
/ 09 марта 2012

Что вам нужно сделать, это запустить упражнение, используя startActivityForResult () .Это позволит вам переопределить onActivityResult () .Просто обновите представление данных, когда вы получите результат.

Также я всегда нахожу, что пользователи неизбежно просят меня предоставить кнопку «Сохранить», чтобы подтвердить действие и нажать «Назад» для отмены операции.

0 голосов
/ 09 марта 2012
Intent intentstart = new Intent(Activity2.this, Activity1.class);
intentstart.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intentstart);

Этот флаг удаляет открытую активность.

Например, рассмотрим задачу, состоящую из действий: A, B, C, D. Если D вызывает startActivity () с намерением, которое разрешается вкомпонент действия B, затем C и D будут завершены, и B получит заданное Намерение, в результате чего стек теперь будет: A, B.

, если вы хотите установить флажок для действия 2 и проверить действие 1когда вернешься.Вы должны использовать

startActivityForResult(intent, requestCode);//when start new activity

Intent resultIntent = new Intent(); // when finish activity2
resultIntent.putExtra("selected", selected); //send checked data to activity1
setResult(Activity.RESULT_OK, resultIntent);
finish();

и затем переопределить onActivityResult (), чтобы установить флажок

PS. Вы можете переопределить onBackPressed () для действия, когда нажата кнопка Назад.

...