3

私は Android 開発にかなり慣れていないので、基本的な UI のほとんどを処理する方法を学ぶために単純なプロジェクトから始めました。

私は ActionBarSherlock と ViewPageIndicator を使用しました。作成した単純なアプリは全体的に機能していますが、まだ奇妙な問題がいくつかあります。説明しましょう:

  • FragmentPageAdapter を使用してフラグメントをその場所に移動するボタンをクリックすると、トランザクションに割り当てたトランジション効果が発生しません。戻って(トランザクションがスタックに追加されて)ボタンをもう一度押した場合にのみ発生します。
  • ボタンをクリックした後に戻ってもう一度クリックすると、フラグメントが表示されますが、奇妙な動作をし、あらゆる種類の奇妙なことを行います。空白だけで、タイトルも)
  • ボタンをクリックしてからデバイスの向きを変更すると、アプリがクラッシュします - デバッグしようとしましたが、Android フレームワーク内のコードに到達しました。

コードのどこかで本当に間違っていたので、これらすべての問題が発生していると思います。私の問題を理解するのを手伝ってください。できれば、何が間違っていたのかを読んで理解できない良い実践や場所を教えてください。

問題のコードをここにアップロードしました: https://code.google.com/p/mich-android-testapp/source/browse/trunk/TestApp/

皆さんからの助けに感謝します!

4

1 に答える 1

3

あなたのコードには、あなたがリストした問題の根本である可能性が最も高いいくつかの問題があります。

まず、通常のアクティビティ (MainActivity) で静的フラグメント (xml レイアウトで直接宣言されているもの) を宣言します。これは、後でOnClickListener. 静的フラグメントでトランザクションを行うべきではないため、これはうまくいきません。代わりに、フラグメントを操作する場合は、プログラムでフラグメントを追加するコンテナー レイアウトを配置する必要があります (補足として、同じ正確な ID を使用するのを忘れた場合は、代わりのトランザクションに汎用 ID を使用するようにしてください。 BaseActivity サブクラスでは問題が発生します)。

2 番目の主な問題は、フラグメントを から保存し、ViewPagerそれらが常に使用するフラグメントであると想定することです。ViewPagerがフラグメントを自動的に再作成するときに、構成の変更後にこれは失敗します。

ネストされたフラグメントを使用する場合はgetChildFragmentManager()FragmentPagerAdapterからに渡す必要がありBasePagerFragmentます。

また、通常のメソッドを使用してフラグメントにデータを渡さないでください。そのデータは構成の変更に耐えられないためです(setPage()メソッドを参照しています)。Bundle代わりにaを使用してください。

この問題を解決した後、エラーがまだ表示されるかどうかを確認してください。

于 2013-04-13T13:59:25.253 に答える