Как сделать функцию возврата и установить последний contentView - PullRequest
0 голосов
/ 13 февраля 2012

У меня в приложении много представлений, и теперь проблема в том, как вернуться из одного представления в другое.

Что я мог бы сделать, сбросив кнопки в каждом представлении, но я хотел бы использоватьЖесткая кнопка возврата Android.

Я пробовал что-то вроде этого:

public boolean onKeyDown(int keyCode, KeyEvent event) 
{       
  if(keyCode==KeyEvent.KEYCODE_BACK)
          {
      finish();
          }
return false;
}

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

Вот код, с которым я меняю представление (это метод в моей основной деятельности):

public void CheckIfUserIsLogedIn ()
{
    int userPresence = localDatabase.CheckUserPresence();
    if (userPresence == 0) 
    {
        setContentView(R.layout.main);
    }
    else
    {
        setContentView(R.layout.userlogedon);
    }
}  

Спасибо.

Ответы [ 3 ]

2 голосов
/ 13 февраля 2012

Смотри!

Вы делаете это неправильно ...

Класс Activity должен иметь только контент View. (потому что это рекомендуемый способ и простой в использовании и реализации).

И если вы хотите перейти к следующему View, покажите его под другим отдельным Activity.

когда вы закончите, вы будете автоматически перенаправлены на предыдущий Activity.

(и вам не нужно запоминать предыдущий просмотр :))

Смотрите здесь , как работать со Activity Стеками.

1 голос
/ 13 февраля 2012

Я не уверен, что правильно понял вашу проблему, потому что Android сделает все это за вас автоматически. Когда представление открывается при переключении на другое представление, оно приостанавливается (на экране, но не имеет фокуса) или останавливается (не имеет фокуса)

http://developer.android.com/reference/android/app/Activity.html

Если текущий вид (действие) был запущен предыдущим видом (действие), нажатие кнопки «Назад» заставит вас «закрыть» текущий вид и автоматически вернуться к предыдущему.

Теперь две вещи:

  1. Возможно, вы просто открываете все виды с одной и той же активностью, показывая включенные или выключенные компоненты, что является плохим способом и не рекомендуется для Android. Что вы должны сделать, это 1 просмотр = 1 деятельность.

  2. Вы думаете, как «iPhone / iPad», где вы должны реализовать кнопки «назад» в «представлениях». В Android вам не нужно этого делать. Добавление команды "finish" в ваш код в этот момент, кажется, закрывает приложение, что заставляет меня думать, что вы запрограммировали, как описано в пункте 1.

Надеюсь, это поможет

EDIT

Чтобы начать новое занятие, сделайте это так

startActivity(new Intent(this, MyOtherActivity.class));

Вы помещаете это в свой код, куда хотите загрузить новый вид (действие)

Теперь, если вы хотите передать некоторую информацию между действиями, вы должны сделать что-то вроде этого:

Intent myIntent; //intent declaration

int aNumber = 10; // info to send to other activity
String aString = "abcd"; // info to send to other activity

// link Intent to the other activity
myIntent = new Intent(view.getContext(), MyOtherActivity.class) 

//put the extra info
myIntent.putExtra("myNumber", aNumber);
myIntent.putExtra("myString", aString);

//start the new view/activity
startActivity(myIntent);

и в новом открытом действии вы извлекаете информацию, как это (обычно в текущем)

int aNumber;
String aString;

@Override
public void onCreate(Bundle savedInstanceState) { 
    aNumber= getIntent().getExtras().getInt("myNumber");
    aString= getIntent().getExtras().getString("myString"); 
}
0 голосов
/ 13 февраля 2012

На самом деле я не уверен, что понимаю, но ..

взять карту или общий предпочтение и при нажатии кнопки назад установить последний вид на карте или общий доступ.

При звонке илив начале активности извлеките данные, которые вас сохранили.

это поможет вам.

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