[英]Child Activity in Android
所以我有兩個活動。 主要叫做Main ,孩子叫做Child 。 在主活動中單擊按鈕時,它會觸發以下代碼:
Intent i = new Intent(Main.this, Child.class);
Main.this.startActivity(i);
這打開了Child活動。
只要我調用finish()或按子活動中的后退按鈕而不是返回主要活動,應用程序就會關閉。 你能給我一個暗示問題可能是:(
PS通過反復試驗我發現如果編輯AndroidManifest.xml並添加
android:theme="@android:style/Theme.Dialog"
在Child的聲明中,后退按鈕和調用finish()按預期運行:關閉子活動並使main成為焦點。 問題是當我開始在EditText中輸入時,屏幕開始閃爍(而不是古怪)。 所以我不能將它用作對話框。 我的主要活動是使用相機,因此可能會出現問題。 雖然啟動子活動時,會觸發onPause事件並在調用onResume之前停止攝像頭。
編輯:
所以我嘗試使用startActivityForResult並添加
Toast.makeText(this, "onPause", Toast.LENGTH_SHORT).show();
到onPause和onResume方法類似的一個。 當Child返回onResume時不會被觸發。 我甚至凌駕於theActivityResult上 ,甚至沒有被觸發。 :(太奇怪......
我想我發現了問題,但我自己無法解決
激活子活動時, onStop以及在主活動中調用onDestroy之后立即激活。 但為什么?!?
您應該能夠執行以下操作:
Intent i = new Intent(this, Child.class);
startActivityForResult(i);
(如果你從內部類調用它,你只需要Main.this)。
如果要退出子活動:
setResult(Result.OK);
finish();
這應該導致在Main類中調用onActivityResult,然后是OnResume。
如果這不起作用,您可以嘗試在各種onX方法中放置斷點或打印語句,以查看正在調用的方法。
根據 http://developer.android.com/resources/faq/commontasks.html#opennewscreen啟動新Activity時會發生什么情況確實不同:
如果第一個Activity仍以某種方式顯示(如您所發現的,如果它以對話框形式顯示),它將只接收onPause()
; 如果它根本不可見,它也會收到onStop()
。
但正如另一個所說,如果你要啟動第二個活動來獲得結果, startActivityForResults
似乎更符合邏輯
(我是新手並且也在學習格式化,您可能希望通過單擊橙色問號來閱讀幫助 - 在代碼示例之前使用4個空格來縮進它們,顯然)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.