問題タブ [back-stack]

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.

0 投票する
1 に答える
295 参照

android - アプリケーションが復元された場合にアクティビティから結果を取得する方法

質問のタイトルはおそらく十分に明確ではありません。これは、アプリケーションが低リソース状態でAndroidによって「強制終了」された後、子アクティビティから親アクティビティに結果を渡し、ユーザーがこのアプリケーションに戻ったときに自動的に復元されるという問題に対処します。

アクティビティAがを使用してアクティビティBを呼び出すとしますstartActivityForResult()。アプリケーション実行コンテキストがBにある間、アプリケーションはバックグラウンドに移行し、しばらくするとシステムによってアンロードされます。その後、ユーザーはアプリケーションに戻り、アクティビティBは問題なく復元されます。唯一の問題は、現時点ではAがAndroidのバックスタックに存在せず、ユーザーがBを閉じると(finish()適切な呼び出しを伴うsetResult())、Aが結果を受け取らないことです。イベントの代わりに、Aはスタートアップチェーンからその他のイベントをonActivityResult()受信します。onCreate()

したがって、問題は、「強制終了」状態の後に復元されるアプリケーションのアクティビティ間で結果を渡す方法です。

アップデート:

@fedepaolがグーグルグループへのリンクを提供したという事実にもかかわらず、誰かがonActivityResult問題の状況で呼び出されるべきであると書いたが、私はそれを機能させることができなかった。また、グーグルグループでのその質問のOPも問題を解決しなかったことに注意する必要があります。また、SOで同様の質問を見つけました-プロセスが強制終了された後、onActivityResultは呼び出されません-これも解決策がありません。

コードを再確認しましたが、なぜ機能しないのかわかりません。通常の状況では、オーバーライドされたメソッドが呼び出されます。アクティビティのバックスタックが1つずつ復元される場合、復元されません。

0 投票する
2 に答える
764 参照

android - ガイドラインに従って「上へ」ナビゲーションを処理する適切な方法

以下のナビゲーションに完全に同意します

ここに画像の説明を入力

Book の詳細が BookDetailActivity のさまざまなインスタンスで作成されると想像してください。

book2 の詳細を押し上げる前のスタックは次のとおりです。

  • BookDetailActivity (Book 2 - あなたはここにいます)
  • BookDetailActivity (ブック 1)
  • すべての書籍のアクティビティ

ガイドラインに従う場合は、次を使用します。

しかし、このコードの大きな問題は、BookDetailActivity (Book 1) がまだ生きていることです!

「up」後に戻るボタンを押すと、Book 1 の詳細が表示されます。

元のアクティビティと押し上げたアクティビティのBookDetailActivity間にあるものをすべて削除するにはどうすればよいですか?AllBooksActivity

0 投票する
0 に答える
995 参照

android - 戻るボタンを押すと onResume() が呼び出される

戻るボタンを押すと奇妙なことが起こり、同じActivityonResume()メソッドが呼び出されます。

Activityスタックにこれのインスタンスが複数あるということですか?

ここにいる誰かが何が起こっているのか教えてもらえますか?

編集:

これは背中を押すと始まります

もう一度押すと

これは、recipientlistインテントを介して前のアクティビティから取得しているサイズによって異なります。サイズが 1 の場合、バックは正常に機能し、サイズが 2 の場合、ログが表示されているため、前のアクティビティに戻るには 2 回連続して押す必要があります。 size=3の場合。getconversation は、リストが null ではないことを onResume() にチェックインしたときに呼び出されるメソッドです。

0 投票する
0 に答える
413 参照

android - FragmentTransaction をバックスタックに追加することはできません

バックスタックにフラグメントを追加しようとしていますが、機能していません。java.lang.IllegalStateException: This FragmentTransaction is not allowed to be added to the back stack.

私はアクションバーのシャーロックを使用しています。私の主な活動では、タブをリッスンします

0 投票する
0 に答える
850 参照

android - Android - 左から右へスワイプして戻る

私は Fragments API に少し慣れていません。ユーザーが情報ツリーを上下に移動できるアプリを構築しています。ナビゲーションを簡単にするために、ユーザーが左から右にスワイプしてページを戻せるようにしたいと考えています。

私の最初の考えは、ViewPager を使用してドリルインするたびに新しい Fragment を追加し、ユーザーが左から右にスワイプするか押し戻すたびに最後のフラグメントを自動的に削除することです。ただし、これがバックスタックとどのように相互作用するかを理解するのに苦労しています。この動作は FragmentManager とは完全に別のものでしょうか? FragmentManager の使用の一部として FragmentPagerAdapter に Fragments を追加する方法はありますか?

0 投票する
0 に答える
101 参照

android - BackStackと同様にAndroidで画面の状態を保存するにはどうすればよいですか?

私はいくつかのアドバイスが必要ないくつかのAndroidUIの側面について疑問に思っています!たぶん、これまでの私の考えは最高ではありません...

基本的に、プレーヤーでストリームを再生するアプリ(メイン画面)に取り組んでいます。ユーザーは2番目の画面(タブバー画面)でストリームを選択できます。ここで、3つの異なるリストを切り替えることができます。各リストはタブのいずれかにあり、各tabbarclickは新しいアクティビティを開始します(ActionBarまたはsthを使用していないので、作成したばかりです。現在の1つが選択され、他の2つが新しいアクティビティを開始する3つのアイコンで構成される独自のUI要素):

  • ListViewActivity1:データベースからネストされたListViews(fe country-> state-> city ..)を使用して動的に作成されたViewFlipper

  • ListViewActivity2:からのfavoritsを使用した単純なListViewListViewActivity1

  • ListViewActivity3:UserGeneratedコンテンツを含むシンプルなListView

これまでのところうまく機能していますが、私は苦労し始めています...ユーザーがタブバー画面に再び入るたびに、私は彼が最後ListViewにいた場所にいることを望んでいます。したがって、基本的に、ユーザーが画面を離れた場合にさまざまな画面を保存する方法を探しています。私は出くわしまし onSaveInstanceState(Bundle savedInstanceState)たが、これは私のニーズに本当に合いません。これListViewActivity 1は、最大6つのレベルを持つ非常に複雑なリストであり、実際には転送したくないものですsavedInstanceState。別の方法はありますか?

実際、に戻るとBackStack、これにより、必要に応じてさまざまな状態が実際に保存されます。だから、それは可能です、私はこのようなものを見つけられません。

それで、質問1:ビューを保存する方法はありBackStackますか?

質問2:UI実装のこのアイデア全体は、アプリをセットアップするための優れたソリューションですか?

入力ありがとうございます!

0 投票する
1 に答える
550 参照

android - フラグメントのバックスタックを機能させることができません。何が間違っていますか?

2つのフラグメントで構成されるレイアウトのアプリケーションがあります。左側に1つのメニューフラグメント、右側にコンテンツフラグメント。ユーザーがメニューフラグメントのメニュー項目を押すと、コンテンツフラグメントが変更されます。

小さなデバイス(電話)では、最初はメニューフラグメントのみを表示します。ユーザーがメニュー項目を押すと、メニューフラグメント全体がコンテンツフラグメントに置き換えられます。ただし、ユーザーが戻るボタンを押してメニューに戻りたい場合は、アプリケーションが閉じます(バックスタックに何もないかのように)。

以下は私のコードのトリミングされたバージョンです、私は何が間違っていますか?

0 投票する
2 に答える
854 参照

android - 新しい履歴を作成する代わりに、履歴を保持するバックスタックからアクティビティを取得します

私はこのようなことをしようとしています:

私は仕事でいくつかの活動をしています:

A-> B-> C

そしてCから、スタックからBのインスタンスを呼び出し、現在の履歴を保持したいと思います。したがって、不思議な結果は次のようになります。

A-> B-> C-> B

ここで、BとBは同じインスタンスですが、[戻る]ボタンで戻る可能性があります。

出来ますか?

だまされる可能性があります: Androidタスク履歴スタック:「重複するアクティビティ」を持つことができますか?

0 投票する
3 に答える
100829 参照

android - Android:フラグメントbackStack

メソッドが呼び出されたときに新しいフラグメントをロードしようとしています。このメソッドは、新しいフラグメントを作成し、他のフラグメントを「置き換え」ます。

私が戻るまで、これはうまくいきます。最後のフラグメントは、戻ったときに削除する必要があります。アクティビティにメソッドを実装する前に

最後のフラグメントを削除するには、フラグメントの変更を正しく処理するかどうかを知りたいです。ここで何かが足りないようです。

0 投票する
1 に答える
2635 参照

android - finish() を呼び出してもアクティビティへのメモリ参照がクリアされない

私のアプリの単純化されたバージョンには、A と B の 2 つのアクティビティがあります。アクティビティ A は B を開始し、いくつかの作業の後、B は finish() を呼び出します。ほとんどのデバイス (4.2 を実行する Galaxy Nexus、4.0.4 を実行する Droid 4、および 2.3.4 を実行する Droid 2) でメモリ アナライザー ツールを使用しても、アクティビティ B の痕跡は表示されません。

しかし、4.1.1 を実行している Samsung S3 では、次の GC ルートへのパス (弱い/ソフト参照は除外) により、MAT はアクティビティ B オブジェクトを表示します。

アクティビティ B を開始および停止するたびに、MAT はアクティビティ B のメモリ フットプリントの別のインスタンスを表示します。また、アクティビティ B を開いたり閉じたりするほど、logcat で報告されるメモリ フットプリントが大きくなります。MAT を使用して GC を強制しても、アクティビティ B メモリへの参照は削除されません。

3 つの質問があります。

  1. デバイスによってメモリ/GC の動作が異なるのはなぜですか?

  2. S3 では、OS は最終的に戻ってきて、取り残されたアクティビティ B オブジェクトを GC します (つまり、Android がクラッシュする前にクリーンアップするので、心配する必要はありません)。

  3. そうでない場合、Thread と AudioManager の参照はどこから来ているのですか?どうすればクリアできますか?

経験豊富な「リークハンター」に感謝します!