タグ付けされた質問 「back-stack」

「バックスタック」は、Androidタスク内のアクティビティが配置されたスタックです。Androidタスクは、特定のジョブを実行するときにユーザーが操作するアクティビティのコレクションです。このプロセスを通じて、アクティビティは、各アクティビティが開かれた順序でスタックに配置されます。アクティビティは、「戻る」ボタンを押すと、後から逆の順序でアクセスできます。

13
履歴スタック全体をクリアし、Androidで新しいアクティビティを開始します
スタックでアクティビティを開始し、その前に履歴全体をクリアすることは可能ですか? 状況 A-> B-> CまたはB-> Cのいずれかのアクティビティスタックがあります(画面Aはユーザートークンを選択しますが、多くのユーザーは単一のトークンしか持っていません)。 画面Cでは、ユーザーが画面Bを無効にするアクションを実行する可能性があるため、アプリケーションは、画面Bがすでにスタックにあるかどうかに関係なく、画面Aに移動したいと考えています。これで、画面Aがアプリケーションのスタック上の唯一の項目になります。 ノート 他にも多くの同様の質問がありますが、この正確な質問に答えるものは見つかりませんでした。私は呼び出してみましたgetParent().finish()-これは常にnullポインタ例外になります。FLAG_ACTIVITY_CLEAR_TOPアクティビティが既にスタックにある場合にのみ機能します。

11
プログラムでバックスタックの前のフラグメントに戻る
プログラムでフラグメントが追加されたアクティビティがあるとします。 private void animateToFragment(Fragment newFragment, String tag) { FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace(R.id.fragment_container, newFragment, tag); ft.addToBackStack(null); ft.commit(); } 表示されていた前のフラグメントに戻る最良の方法は何ですか? Androidのボタンクリックでトリガーバックボタン機能を見つけましたが、バックキーイベントをシミュレートすることはそれを回避するための適切な方法ではないと思います(それを機能させることもできません)。 dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK)); 電話をかけるfinish()だけで、興味のないアクティビティが閉じられます。 これについてより良い方法はありますか?

13
前のアクティビティに戻らないようにする方法は?
電話で「戻る」ボタンが押されたときに、特定のアクティビティが前のアクティビティに戻らないようにしたいのですが。 具体的には、ログイン画面とサインアップ画面があり、どちらもHomeScreenログイン/サインアップが成功したときに呼び出される新しいアクティビティを開始します。ホーム画面が起動したら、ユーザーが[戻る]キーを押してログイン画面に戻ったり、サインアップしたりできないようにしたいと思います。 を使ってみましたIntent.FLAG_ACTIVITY_NO_HISTORYが、アプリケーションにFacebookが統合されているため、「Login with Facebook」を使用するとFacebookが最初のログイン画面に戻るため、これらのアクティビティの履歴を保持する必要があります。 ボタンを押してHomeScreen使用したときにアプリケーションを直接終了するために、戻るボタンの動作をオーバーライドすることを考えました @Override public void onBackPressed() { finish(); } しかし、それも機能しません。

18
フラグメントonResume()およびonPause()がバックスタックで呼び出されない
アクティビティ内に複数のフラグメントがあります。ボタンをクリックすると、新しいフラグメントが開始され、バックスタックに追加されます。私は当然onPause()、現在のFragmentとonResume()新しいFragment のメソッドが呼び出されることを期待していました。まあそれは起こっていません。 LoginFragment.java public class LoginFragment extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View view = inflater.inflate(R.layout.login_fragment, container, false); final FragmentManager mFragmentmanager = getFragmentManager(); Button btnHome = (Button)view.findViewById(R.id.home_btn); btnHome.setOnClickListener(new View.OnClickListener() { public void onClick(View view){ HomeFragment fragment = new HomeFragment(); FragmentTransaction ft2 = mFragmentmanager.beginTransaction(); …

13
バックスタックに追加したときにフラグメントの状態を維持するにはどうすればよいですか?
2つのフラグメントを切り替えるダミーアクティビティを作成しました。FragmentAからFragmentBに移動すると、FragmentAがバックスタックに追加されます。ただし、FragmentAに戻ると(押し戻すことにより)、まったく新しいFragmentAが作成され、その状態が失われます。私はこの質問と同じことをしているように感じますが、問題を根絶するのに役立つ完全なコードサンプルを含めました。 public class FooActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(android.R.id.content, new FragmentA()); transaction.commit(); } public void nextFragment() { final FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(android.R.id.content, new FragmentB()); transaction.addToBackStack(null); transaction.commit(); } public static class FragmentA extends Fragment { @Override public View onCreateView(LayoutInflater …

6
存在する場合にBackStackからフラグメントを再開する方法
フラグメントの使い方を学んでいます。Fragmentクラスの先頭で初期化されているインスタンスが3つあります。このようなアクティビティにフラグメントを追加しています: 宣言と初期化: Fragment A = new AFragment(); Fragment B = new BFragment(); Fragment C = new CFragment(); 交換/追加: FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.content_frame, A); ft.addToBackStack(null); ft.commit(); これらのスニペットは正しく機能しています。すべてのフラグメントはアクティビティに添付され、問題なくバックスタックに保存されます。 したがって、を起動するAとC、Bスタックは次のようになります。 | | |B| |C| |A| ___ そして「戻る」ボタンを押すと、B破壊されCて再開されます。 しかし、フラグメントをもう一度起動Aすると、バックスタックから再開するのではなく、フラグメントがバックスタックの一番上に追加されます | | |A| |C| |A| ___ しかしA、その上にあるすべてのフラグメント(ある場合)を再開して破棄したいと思います。実際、私はデフォルトのバックスタック動作が好きです。 どうすればこれを達成できますか? 予想:(A再開し、上部のフラグメントを破棄する必要があります) | | | | | …

9
Android Fragmentバックスタックの問題
私は、androidフラグメントのバックスタックが機能しているように見える方法に大きな問題を抱えており、提供されたヘルプに最も感謝しています。 あなたが3つのフラグメントを持っていると想像してください [1] [2] [3] ユーザーがナビゲートできるようにし[1] > [2] > [3]ながら、戻る途中([戻る]ボタンを押す)にしたい[3] > [1]。 私が想像したように、これは、XMLで定義されたフラグメントホルダーにaddToBackStack(..)フラグメントをもたらすトランザクションを作成するときに呼び出しを行わないことによって達成[2]されます。 この現実は[2]、ユーザーが戻るボタンを押したときに再び表示され[3]ないようaddToBackStackにするには、フラグメントを表示するトランザクションで呼び出してはならないように見えます[3]。これは完全に直観に反しているようです(おそらくiOSの世界から来ているでしょう)。 とにかく、この方法でそれを行うと、[1] > [2]私が戻って押したときに[1]、期待どおりに戻ります。 私が行っ[1] > [2] > [3]てから戻ると、[1](予想どおり)に戻ります。[2]からジャンプしようとすると、奇妙な動作が発生し[1]ます。まず、[3]表示される前に簡単に表示さ[2]れます。この時点で「戻る」を押す[3]と表示され、もう一度「戻る」を押すとアプリが終了します。 誰かが私がここで起こっていることを理解するのを手伝ってくれる? そして、これが私の主な活動のレイアウトxmlファイルです。 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <fragment android:id="@+id/headerFragment" android:layout_width="match_parent" android:layout_height="wrap_content" class="com.fragment_test.FragmentControls" > <!-- Preview: layout=@layout/details --> </fragment> <FrameLayout android:id="@+id/detailFragment" android:layout_width="match_parent" android:layout_height="fill_parent" /> 更新 …

11
異なるインテントで起動されたアクティビティの複数のインスタンスを防ぐ方法
アプリケーションがGoogle Playストアアプリ(以前はAndroidマーケットと呼ばれていました)の[ 開く ]ボタンを使用して起動したときに、バグが発生しました。PlayストアIntentからの起動と、携帯電話のアイコンのアプリケーションメニューからの起動では使用方法が異なるようです。これにより、同じアクティビティの複数のコピーが起動され、互いに競合します。 たとえば、私のアプリがアクティビティABCで構成されている場合、この問題はABCAのスタックにつながる可能性があります。 android:launchMode="singleTask"この問題を修正するためにすべてのアクティビティを使用してみましたが、ホームボタンを押すたびに、アクティビティスタックがルートにクリアされるという望ましくない副作用があります。 予想される動作は次のとおりです。ABC->ホーム->アプリが復元されたときに、次のものが必要です:ABC->ホーム-> ABC ホームボタンを使用するときにルートアクティビティにリセットせずに、同じタイプの複数のアクティビティを起動しないようにする良い方法はありますか?

17
Android:バックスタックから以前のすべてのアクティビティを削除します
プロファイルアクティビティの[ ログアウト ]ボタンをクリックしているときに、ユーザーをログインページに移動します。このページでは、新しい資格情報を使用する必要があります。 したがって、私はこのコードを使用しました: Intent intent = new Intent(ProfileActivity.this, LoginActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); でonButtonClickログアウトボタンの。 しかし、問題は、ログインアクティビティのデバイスの戻るボタンをクリックすると、ProfileActivityに移動することです。LoginActivityでデバイスの戻るボタンを押すと、アプリケーションが閉じるはずだと思っていました。 何が悪いのですか? LoginActivityのandroid:launchMode="singleTop"マニフェストにも追加しました ありがとうございました

6
BackStackでフラグメントアニメーションを逆にする方法は?
次のコードを使用してフラグメントを使用しているときに、戻るボタンが押されたときに、システムがバックスタックのアニメーションを反転させると思いました。 FragmentManager fm = getFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); ft.setCustomAnimations(R.anim.slide_in, R.anim.hyperspace_out); ft.replace(R.id.viewContainer, new class(), "layout").addToBackStack(null).commit();

16
バックスタックの最新のフラグメントを取得する
最新のフラグメントインスタンスをバックスタックに追加するにはどうすればよいですか(フラグメントタグとIDがわからない場合)。 FragmentManager fragManager = activity.getSupportFragmentManager(); FragmentTransaction fragTransacion = fragMgr.beginTransaction(); /****After add , replace fragments (some of the fragments are add to backstack , some are not)***/ //HERE, How can I get the latest added fragment from backstack ??

10
Android:スタックに保存せずにアクティビティを開く
メインとリストの2つのアクティビティがあります。 メインからリストを開くことができます。リストからメインを開くことができます。 リストを開くたびに「履歴」に保存されないようにしてください。そのため、メインから戻ると、リストに戻ることができません。 出来ますか?

12
バックスタックからのフラグメントonResume
Android 2.2でフラグメントを使用するために互換性パッケージを使用しています。フラグメントを使用し、それらの間にトランジションをバックスタックに追加するとき、アクティビティのonResumeと同じ動作を達成したい、つまり、フラグメントが「フォアグラウンド」(ユーザーから見える)にされた後バックスタック、フラグメント内で(たとえば、共有されたUIリソースで特定の変更を実行するために)ある種のコールバックをアクティブ化したいのですが。 フラグメントフレームワーク内にコールバックが組み込まれていないことがわかりました。これを達成するための良い習慣はありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.