問題タブ [activity-finish]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - ハンドラーからアクティビティを終了するには?
ハンドラからアラート ダイアログを呼び出しています。アラート ダイアログには、「もう一度再生」と「終了」の 2 つのボタンがあります。「もう一度再生」ボタンでアクティビティを再開するコードを書きました。しかし、終了ボタンをクリックしたときにアプリケーションを終了する方法がわかりません。私はハンドラーからfinish()を呼び出すことができません。以下は私のコードです。誰か助けてください...
android - Finishactivityはアクティビティを終了しませんか?
アクティビティを閉じて結果を返すようにしています。親アクティビティにonActivityResultがあり、他の場所で同じメソッドを使用しています。
このメソッドはこのメニューから呼び出されました:
なぜそれが閉じないのか、明るいアイデアを持っている人はいますか?
android - Android onPause() とデバイスの傾き
onPause メソッドの下で finish() を呼び出して、すべての Android アクティビティを終了しようとしています。デバイスを傾けたときにアクティビティが終了したことに気付くまで(Galaxyタブ)、これは正常に機能していました。したがって、水平または垂直に傾けると、デバイスがアクティビティを一時停止して再描画すると想定しています。これは私の計画に大きなお金のレンチを投げました. したがって、問題は、デバイスを傾けるなどのシステムの一時停止ではなく、一時停止時にアクティビティを終了する方法です。みんなありがとう。
android - Android-アクティビティを終了してアプリを終了します
私は3つのアクティビティで構成されるアプリケーションを持っています-それらをA、B、Cと呼びましょう。アクティビティAからアクティビティB、BからC、CからAに移動できます(戻るボタンを押すことにより)。
アクティビティでは、AIに終了ボタンがあります(Androidでは推奨されていないことはわかっていますが、多くのユーザーがそれを求めているので、追加することにしました)。
とにかく問題は次のとおりです。アクティビティBにはタイマーがあり、タイマーが終了すると、アクティビティCを開始するインテントを開始し、アクティビティBでfinish()を呼び出します。
次に、ユーザーがアクティビティCをもう一度押すと、アクティビティAに移動します。次に、終了ボタンを押すと(このボタンはfinish()のみを実行します)、アクティビティBが再びポップアップします。どうすればそれを防ぐことができますか?
ありがとう!
android - オブジェクトからアクティビティを終了できますか?
私の活動を表すクラスがあり、次のようなオブジェクトがあります
それを行う方法はありますか?
android - Android、ダイアログの戻るボタンがクリックされたときにアプリを閉じるにはどうすればよいですか?
私の主な活動では、キャンセル可能なダイアログを呼び出します。ユーザーがインターネットに接続していないときにアプリを起動すると、このダイアログが表示されます。したがって、このダイアログを表示して、彼にインターネットへの接続を依頼します。
このダイアログにはボタンがなく、ユーザーが戻るボタンをクリックしたときにアプリケーションを閉じたいです。メソッドではonKeyDown()
、アプリケーションを閉じています ( this.finish();
) が、問題は、ユーザーが [戻る] ボタンをクリックしたときにダイアログが画面に表示され、このダイアログが消え、主なアクティビティが表示されることです。
ダイアログではなく、メインアクティビティでのみ onKeyDown() が機能するようです。ダイアログが表示され、ユーザーが戻るボタンをクリックしたときにアプリを閉じる方法は?
ありがとう
=====> 更新
これは私のカスタムダイアログのコードです:
java - finish() がすぐに処理を終了しないのはなぜですか?
を呼び出した直後にアクティビティを終了しないと便利な特定の状況はありますfinish()
か?
(別の言い方をすれば、なぜこのメソッドはデザインからすぐにアクティビティを終了しないのでしょうか?)
http://developer.android.com/reference/android/app/Activity.html#finish()
アップデート
私がすぐに言うとき、つまり、すぐに を呼び出します。finish()
もちろん、インスタンス バンドルを保存してクリーンアップする onStop メソッドと onDestroy メソッドはカウントされません。
私が話していることの例を見るために、ここにスニペットがあります
問題は、条件の後のコードがアクティビティを終了する前に終了した理由と、finish()
呼び出しが処理をすぐに停止しない理由です。
android - ダイアログとアクティビティを終了する
alertdialogで始まるアクティビティがあります
戻るボタンを押すと、ダイアログのみが閉じます。
ダイアログとアクティビティの両方を閉じたい。
これを行う方法?
android - Android: 破棄のスタック トレース
私のアプリケーションの主な活動は「破壊」されています。印刷されているログメッセージが破棄されています。しかし、終了が呼び出されているパスは実行されていません。
だから私はどのようにして destroy() が呼び出されるようになったのかを知りたいのです。私のコード、またはその他のシステムエラーから終了しますか。
注: 回答: 起動アクティビティ用に android:noHistory="true" を保持していました。他の活動からのバックプレスでこのページが再び表示されないようにしたかった. そして、私はこの活動の破壊でdbのようなすべてのクリーンアップを維持していました. SO nohistory = true が原因で、このアクティビティは自動的に破棄され、すべてのリソースが閉じられ、アプリケーションで例外が発生しました。
このフラグを削除して修正し、2 番目のアクティビティの onbackpressed をオーバーライドしました。
回答ありがとうございます
android - アクティビティが finish() の後に onDestroy() を呼び出していない
私には 3 つの活動があります。それらを 1 つ、2 つ、3 つと呼びましょう。アクティビティ 1 から、ボタンを押すとアクティビティ 2 が開始されます。アクティビティ 2 から、ボタンを押すとアクティビティ 3 が開始されます。
十分に単純です。
ここで、アクティビティ THREE には、アプリケーションからアクセスできるデータが少し必要です (存在する場合と存在しない場合があります)。THREE のonResume()
メソッドでは、次のようにデータのチェックが行われ、存在しない場合はアクティビティが終了します。
のときdata == null
、THREE は終了し、破棄して TWO に戻ります。すべては順調です。TWO では、戻るボタンを押すと TWO が呼び出さfinish()
れますが、TWO は を呼び出しませんonDestroy()
。ユーザーは問題なく ONE に戻されますが、その後 TWO に戻ろうとしても機能せず、エラーはスローされません。TWO は終了 (および一時停止) した状態のままになりますが、破棄されることはなく、結果として再開できません。
では、この場合、なぜ THREE が重要なのでしょうか? 上記のコード ブロックの呼び出しを削除し、finish()
(戻るボタンを使用して) THREE の「自然な」終了に依存すると、ユーザーが ONE に戻ったときに TWO が正しく破棄されます。
OK、ここが本当に混乱するところです...
通話finish()
をそのままにして、ONE から直接 THREE を起動してハングアップを軽減し、「自然に」通話を終了します ([戻る] ボタン)。THREE が破壊された後 (2 回目)、TWO が期待どおりに開きます。
私が読んだことはすべて、活動のために電話finish()
しても大丈夫だと言ってonResume()
います。しかし、この場合、それは何かを悪い状態のままにしており、呼び出しアクティビティを後で破棄することを妨げています.
アイデア?または、私はあなたの脳を裏返しにしましたか?
編集:
さらなる調査により、この宝石が発見されました...
finish()
THREE 内の呼び出しpostDelay()
を約 500 ミリ秒のハンドラーで囲むと、期待どおりに TWO を閉じることができます。このような:
正確には私の考えではありません...