Дочернее действие в Android

Таким образом, у меня есть две Операции. Основное называют Основным, и ребенок, каждого называют Ребенком. Когда кнопка нажата в основном виде деятельности, это инициировало следующую часть кода:

Intent i = new Intent(Main.this, Child.class);
Main.this.startActivity(i);

Это открывает Дочернее действие.

Как только я называю конец () или нажимаю кнопку "Назад" в рамках дочернего действия вместо того, чтобы возвращаться к основному, приложение просто закрывается. Можно ли дать мне подсказку, где проблема могла бы быть :(

P.S. Методом проб и ошибок я узнал это, если редактирование AndroidManifest.xml и добавляет

android:theme="@android:style/Theme.Dialog"

в объявлении Ребенка кнопка "Назад" и называющий конец () ведет себя как ожидалось: закрывает дочернее действие и подчеркивает основное. Проблема состоит в том, что, когда я начинаю вводить в EditText, экран начинает мерцать (скорее bizzare). Таким образом, я не могу использовать его в качестве диалогового окна. Мой основной вид деятельности использует камеру, так, чтобы мог бы делать проблемы. Хотя, когда дочернее действие запускается, onPause событие запущено, и оно останавливает камеру, пока onResume не называют.

Править:

Таким образом, я попытался использовать startActivityForResult и добавил

Toast.makeText(this, "onPause", Toast.LENGTH_SHORT).show();

к onPause и подобному к onResume методам. Когда Ребенок возвращается, onResume не становится инициированным. Я даже overrided onActivityResult и даже который не становится инициированным.:( Настолько причудливый...

Я думаю, что нашел проблему, но я не могу решить ее сам

Когда Дочернее действие активируется, onStop и сразу после этого onDestroy вызываются в рамках Основного вида деятельности. Но почему?!?

7
задан Martin Marinov 18 June 2010 в 09:50
поделиться

2 ответа

Вы должны быть в состоянии сделать следующее:

Intent i = new Intent(this, Child.class);
startActivityForResult(i);

(Вам нужен Main.this, только если вы вызываете его из внутреннего класса).

Когда вы хотите выйти из дочерней активности:

setResult(Result.OK);
finish();

Это должно привести к вызову onActivityResult в вашем классе Main, а затем OnResume.

Если это не сработает, вы можете попробовать поставить точки останова или операторы печати в различных методах onX, чтобы увидеть, какие из них вызываются.

10
ответ дан 6 December 2019 в 23:00
поделиться

Согласно http://developer.android.com/resources/faq/commontasks.html#opennewscreen то, что происходит при запуске новой Activity, действительно отличается:
Если первая Activity еще как-то видна (как вы обнаружили, например, если она отображается в виде диалога), она просто получит onPause(); если она больше не видна, она также получит onStop().
Но, как сказал другой, если вы запускаете вторую активность, чтобы получить от нее результаты, startActivityForResults кажется более логичным

(я новичок и тоже изучаю форматирование, вы можете прочитать справку, нажав на оранжевый знак вопроса - используйте 4 пробела перед примерами кода, чтобы отступить от них, очевидно)

.
1
ответ дан 6 December 2019 в 23:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: