問題タブ [android-configchanges]

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 に答える
333 参照

android - 画面をオフにして回転時にデータを復元する

このメソッドの「outState」にデータを保存しています:

これは、アクティビティが再開されたときに、onCreate()メソッドで次のことができることを意味します。

ただし、これにより、画面がオフになった後に問題が発生します。画面がオフになると、アクティビティは強制終了されます。これは onSaveInstanceState()、画面オフ期間中にローテーションが発生した場合は が呼び出されずsavedInstancestate、アクティビティが完全に再開されたため が null であることを意味します。その結果、デバイスがローテーションされたにもかかわらず、値が保存および復元されませんでした。

どうすればこれを回避できますか?

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

android - ネストされたアダプターの状態を保存する (FragmentPagerAdapter + ListViewAdapter)

私のアクティビティには、シンプルなviewPager + viewPagerAdapterがあります:

viewPager の各ページには、1 つの SearchFragment があります。すべての SearchFragment には、ListView + listViewAdapter のみがあります。

listView のすべての行には、別のアクティビティを開始するボタンがあります (YouTubePlayer ですが、これは重要ではありません)。YouTube ビデオが終了するか、ユーザーが [戻る] ボタンをクリックすると、YouTubePlayer-Activity が閉じ、自分の Activity + ViewPager + ViewPages の SearchFragments + SearchFragments の ListViews が再び表示されます。

viewPager の位置 (Activity のフィールドに保存) を復元できますが、viewPager の SearchFragments (上記の SearchFragmentAdapter のコンストラクターを参照)

ListView のコンテンツとスクロール位置を保持する ListView と ListViewAdapter を復元できません。もちろん、構成の変更でも同じことが起こります。Activity が再度ビルドされ、そのフィールドから viewPager の位置を復元できますが、スクロール位置、特に SearchFragments のコンテンツは失われます。

デバイスを回転させた後、少なくとも listViews のコンテンツ (スクロール位置は便利です) を復元するにはどうすればよいですか?

viewPager と ListViews の状態保存についてはよく読んでいますが、この組み合わせ (viewPager + listView = 独自の状態とコンテンツを持つ 2 つのアダプター) での状態保存に関する良い情報はほとんどありません。

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

android - 構成変更中に中断されないタスクを開始できるフラグメント

私の英語でごめんなさい

これは質問ではありません。誰かの参考になるかもしれないので投稿します。数か月前にここに配置されたソリューションに基づく私のソリューションですが、後でその作成者が削除しました。しかし、彼のソリューションにはいくつかのバグがあり、私はそれらを修正しようとしました。

アプリで長時間実行されたタスクが実行されている間に別のアプリを開き、別のアプリで画面の向きを変更し、タスクが終了した後にアプリに戻っても、私のソリューションは正常に機能します。

私のソリューションにバグが見つかった場合は、お知らせください。

見てください:

したがって、 の各継承者はFragmentAbleToStartTaskを実装する必要がありますonTaskResult(requestCode, resultCode, result)。In onTaskResult()-requestCodeに渡された値ですstartTask(requestCode, ...)。また、このフラグメントは同時に 1 つのタスクしか実行できないことに注意してください。

TaskNotBeInterruptedDuringConfigurationChangeのサブクラスの例:

FragmentAbleToStartTaskのサブクラスの例:

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

android - ビューページャーで向きを変更した後のダイアログの null

スワイプするたびに、新しいページが読み込まれます。最初はすべて縦向きで作業していましたが、今は横向きと縦向きで機能させようとしています。しかし、画面を回転させるとNullPointerExceptionDialog.

MainActivityの innerclass内でそれを引き起こす関数FragmentStatePagerAdapter:

フラグメント内の関数:

ダイアログは 内でインスタンス化され、onCreateViewnull ではないことをログに記録します。内部にログインするonPageVisibleと null が返され、内部でログイン mProgress = new ProgressDialog(getActivity());するonPageVisibleと nullpointer が返されますが、代わりにその行に表示されます。

に設定する必要がある理由が本当にわかりませんonCreateView

ここに画像の説明を入力

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

android - カスタム リスナーの作成方法

フラグメントが表示されたときに応答するリスナーをフラグメント内に作成したいと考えています。私は現在、アクティビティ内の onPageListener でそれを行っていますが、それは私の状況では機能しません。必要なのは、フラグメントに入ったときに onStart で AsyncTask を実行することです。onPageListener を使用すると、前にそれを実行しようとします。

ボタンを使用すると、次のように機能します。

このコードは、gitHubから取得した外部クラスからのものです

ブール値に応答するリスナーは、次のようにそれを行わないことについてすでに行っています: if(true) { code... }

ビューページャーがすでにフラグメントを開始しているページに変更しても呼び出されないため、ボタンを押すと非アクティブになり、リスナーはまだ反応し、それが必要です。