0

3つのレイアウトで3つのアクティビティを使用しました。複数のアクティビティインテントから単一のViewPager&Fragmentsへのアップグレード/マイグレーション

1. HomeActivity.java (activity_home.xml) 
2. HelpActivity.java (activity_help.xml) 
3. SettingsActivity.java (activity_settings.xml) 

私は他の活動を開く必要があったときはいつでも、私はoverridePendingIntentを使用してアニメーションスライドイン・アウトインテントを使用していました。このように、HomeActivityのすべての変数はそれ自身にとどまり、HelpActivityの変数/メソッドはそれ自体であり、SettingsActivityに対しても同じでした。私はこれらの中でonCreate()を使用して、アクティビティ固有のコードを実行しました。 android:onClick="fetchSarcasm"からactivity_home.xmlまではHomeActivity.javaに指定されたメソッドを呼び出していました。だから、紛争はなかった。 3つのアクティビティを持つAndroidProjectで起こり、互いに切り替えようとする意図を持つすべての通常のことが、私が望むように起こっていました。

今、私は、スライドインイントントトランジションの代わりにViewPagerに移行したいと考えていました。このようにして、ViewPagerのXMLを持つアクティビティは1つだけになります。このViewPagerとそのFragmentPagerAdapterは、相対XMLレイアウトでFragmentを拡張する3つのクラスからページを取得します。どこでonCreate()layoutView's onClick=""ためとonChangeListenersのための私のページ固有コードを書くのです:

は、私がお聞きしたいと思います。 Fragmentを拡張する3つのクラスにはContextまたはfindViewById()が含まれていないため、異なるレイアウトのandroid:onClick="method"には応答しません。

3つのアクティビティのすべてのコードをViewPagerを含むものに混在させる必要がありますか?その場合、ViewPagerのアクティビティはかなり重くなります。 if(page=2){ dothis(); }と書くと、すべてのコードポイントですべてのページが不合理に見えます。ページ3にあるチェックボックス(ビュー)は、他のページではnullになります。

これは愚かな質問かもしれません。私は何かを達成しようとするとほぼ4日間過ごしましたが、私はできません。また、これはアンドロイドの2ヶ月目ですので、私は新しいです。私は、アクションバー、タブ付きバー、またはナビゲーションドロアを使用しません。

何かもっとお聞きしたい場合は、私もSOチャットで利用できます。

私は、ViewPagerを使用していないときに行ったすべての作業をどのようにマージするのかを知りたいだけです。

+0

あなたが彼らにスワイプするとき、 '' ViewPager'sでFragment'sは必ずしも再作成されません。あなたの 'onCreate()'コードは、フラグメントがユーザーに見えるようになるたびに本当に呼び出される必要がありますか? –

+0

いいえ、すべてのページ変更で 'onCreate()'は必須ではありません。 'onCreate()'では、CheckBoxがチェックされているかどうかを判断するsharedPreferenceのいくつかを復元します。私はこれは 'setOnPageChangeListener'を介して行うことができると思うが、毎回? – rupinderjeet

+0

'onViewCreated()'や 'Fragment'の' onCreateView() 'でプリファレンスを読み、それに応じてチェックボックスを設定することができます。 –

答えて

1

あなただけの各Fragmentに一度設定を読んでいる場合は、各FragmentonViewCreated()またはonCreateView()に以前Activity.onCreate()ロジックを移動することができます。あなたの共有の環境設定を読み、それに応じてチェックボックスを設定してください。

Fragment内のViewPagerは必ずしも各ページの変更時に再作成されるわけではありません。 ViewPager.setOffscreenPageLimit(int)で一度にインスタンス化されるFragmentの数を変更することができます。

Fragment Lifecycles explained

関連する問題