Пользовательский интерфейс Android Activity Persistence - PullRequest
1 голос
/ 11 июня 2010

Мне нужно иметь два действия в приложении Android, которые можно переключать между собой с сохранением пользовательского интерфейса следующим образом:

  1. Действие A запускает Действие B.

  2. Пользователь вызывает некоторые изменения пользовательского интерфейса в действии B.

  3. Деятельность B возвращается к Деятельности A (путем вызова onBackPressed() или чего-то подобного)

  4. Действие A перезапускает Действие B.

Мне бы хотелось, чтобы изменения, сделанные на шаге 2, были видны на шаге 4.

Я пытался использовать тег активности singleInstance на Деятельности B, но безрезультатно. Я также предпочел бы более элегантное решение, чем просто запись всех свойств объекта в файл или таблицу SQLite. Кажется, что такое поведение должно быть легко достижимым, учитывая, что Android делает это автоматически для вызовов на onBackPressed(), где сохранен пользовательский интерфейс родительской активности.

Любая помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 11 июня 2010

Если вы хотите сохранить данные между несколькими действиями, лучше создать подкласс Application и поместить туда свои объекты.Тогда каждое порождаемое вами действие может овладеть одними и теми же объектами.

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

Как объявить глобальные переменные в Android?

1 голос
/ 11 июня 2010

Действие A запускает Действие B

.

Intent intent = new Intent(ActivityA.this, ActivityB.class);
startActivityForResult(intent); 

Запустить Действие B из Действие A с помощью startActivityForResult.

Пользователь вызывает некоторые изменения пользовательского интерфейса в Деятельности B

.

Активность B возвращается к Деятельности A (путем вызова onBackPressed ()или что-то подобное)

Intent intent = new Intent();
                    intent.putExtra("change_value1", change1);
                    intent.putExtra("change_value2", change2);
                    setResult(RESULT_OK, intent);
                    finish();

Занятие A перезапускает Занятие B.

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        /*
         * Gets invoked on finish() from ActivityB.class
         */
        super.onActivityResult(requestCode, resultCode, data);

        switch(requestCode){
        case 0:

            if(resultCode == RESULT_OK){
                String change1, change2;
                    change1 = data.getStringExtra("change_value1");
                change2 = data.getStringExtra("change_value2");
                Intent intent = new Intent(ActivityA.this, ActivityB.class);
                                startActivity(intent); 
            }
        }
    } 

Подробнее о намерениях вы можете прочитать здесь .

...