Активация диалога на другом экране - PullRequest
0 голосов
/ 15 ноября 2011

Я хотел бы попросить предложения относительно приложения, которое я делаю ...

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

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

Ответы [ 5 ]

1 голос
/ 15 ноября 2011

Экран 2 должен знать, должен ли он отображать диалог или нет.

Следовательно, экран 1 должен отправить некоторые данные на экран 2 (может быть, сообщение «показать диалоговое окно» или, возможно, содержимое этого диалога).

Если экран 2 принимает данные, отобразить диалоговое окно.Иначе, ничего не делать.

В Android:

  • Если кнопка нажата, сохраните данные в своей Activity1.
  • Если вы хотите отобразить screen2, отправьтеIntent с startActivity().Если данные сохранены, поместите их в Intent перед его запуском (см. Intent.putExtra () doc )
  • в onCreate Activity2, получите намерение с getIntent())и проверьте, содержит ли он данные или нет (см. Intent.hasExtra () doc )
  • , если true, затем отобразите ваш AlertDialog
1 голос
/ 15 ноября 2011

Когда вы создаете Intent для запуска действия 2, установите для него дополнительный параметр с помощью

boolean showDialog=...
intent.putExtra("yourextraname", showDialog );

Тогда в упражнении2 вы можете использовать это:

boolean showDialog=getIntent().getBooleanExtra("yourextraname", false);
1 голос
/ 15 ноября 2011

Что вам нужно сделать, это передать boolean с помощью Намерения из вашего первого занятия ( действие представляет собой экран ), а затем загрузить его во втором задании.Там вы можете прочитать значение и либо показать, либо не показывать диалоговое окно.

Дополнительная информация о передаче данных из одного занятия в другое с использованием намерений

0 голосов
/ 15 ноября 2011

Я думаю, что наиболее безопасным и простым решением было бы установить флаг с помощью SharedPreferences

Пример кода (вы должны проверить его по документации):

// screen one
sharedPreferences.edit().putBoolean("showWindow", true).commit();

// screen two
if(sharedPreferences.getBoolean("showWindow", false)) {
    sharedPreferences.edit().putBoolean("showWindow", false).commit();
    // show Dialog
}
0 голосов
/ 15 ноября 2011

Вместо того, чтобы передавать данные между двумя действиями с помощью Intent Extras, просто сохраните их в классе Model, отвечающем за управление всеми данными в вашем приложении (шаблоны проектирования Ala MVC):

// screen 1 button click
...
@Override 
void OnClick(View v)
{
    Model.setScreen1Clicked(true);
}

...

// screen 2 loads
...
void onCreate(Bundle savedInstanceState)
{
    if( Model.screen1Clicked() )
    {
        showDialog();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...