簡體   English   中英

Android中的兒童活動

[英]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();

onPauseonResume方法類似的一個。 當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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM