Таким образом, у меня есть две Операции. Основное называют Основным, и ребенок, каждого называют Ребенком. Когда кнопка нажата в основном виде деятельности, это инициировало следующую часть кода:
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 вызываются в рамках Основного вида деятельности. Но почему?!?
Вы должны быть в состоянии сделать следующее:
Intent i = new Intent(this, Child.class);
startActivityForResult(i);
(Вам нужен Main.this, только если вы вызываете его из внутреннего класса).
Когда вы хотите выйти из дочерней активности:
setResult(Result.OK);
finish();
Это должно привести к вызову onActivityResult в вашем классе Main, а затем OnResume.
Если это не сработает, вы можете попробовать поставить точки останова или операторы печати в различных методах onX, чтобы увидеть, какие из них вызываются.
Согласно http://developer.android.com/resources/faq/commontasks.html#opennewscreen то, что происходит при запуске новой Activity, действительно отличается:
Если первая Activity еще как-то видна (как вы обнаружили, например, если она отображается в виде диалога), она просто получит onPause()
; если она больше не видна, она также получит onStop()
.
Но, как сказал другой, если вы запускаете вторую активность, чтобы получить от нее результаты, startActivityForResults
кажется более логичным
(я новичок и тоже изучаю форматирование, вы можете прочитать справку, нажав на оранжевый знак вопроса - используйте 4 пробела перед примерами кода, чтобы отступить от них, очевидно)
.