問題タブ [android-pageradapter]
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.
android - PagerAdapter クラスが複数回呼び出される
ViewPager ビューを持つアプリケーションで作業しています。ビューを持つ PagerAdapter を作成しました。PagerAdapter の instantiateItem() メソッドが create() で 2 回呼び出されます。理由はわかりません。誰か助けてください。これ?
ここに私のコードがあります、
助けてください
android - ViewPager 内の ListFragments
私は最初のフラグメント ベースのアプリを作成していて、API や Stackoverflow では解決できない重大な問題に直面しています。
viewPagerを使用して2 つのリスト間をスワイプしています。各リストには、新しいリスト要素を作成するためのヘッダーボタンがあります (ネイティブの Android アラーム アプリに似ています)。このボタンは現在、デバッグ用のエラー メッセージを返します。
問題は:
- FragmentList A が FragmentList B のデバッグ メッセージを返す
FragmentList B がデバッグ メッセージを返さない
/li>
私のカスタムPageAdapterは、2 つのリスト Framgent オブジェクトを作成します。
FoodListFragment の抜粋 (他のリストは、デバッグ出力を除いて同様に見えます):
main.xml:
android - ViewPagerのすべてのページに単一のフラグメントを使用するにはどうすればよいですか?
私のアプリケーションでは、学生の詳細をで表示する必要がありViewPager
ます。私は1つのフラグメント(たとえばStudentPageFragment
)を使用し、ウィジェット初期化コードを次のonCreateView()
ように記述します。
ArrayList<Student>
すべての学生オブジェクトを保持する共通オブジェクトを維持しました。
そして、displayStudentDetails()
メソッドでは、最初の3つのStudentオブジェクトをそこに配置します。次のページをスワイプすると、同じフラグメントが表示された次の3つのStudentオブジェクトと呼ばれるはずです。
そしてViewPagerAdapter
クラスで:
今私の問題は、すべてのページに最初の3つの学生の詳細が含まれていることです。これを行うための最良の方法を教えてください。
android - Android:FragmentPagerAdapter:getItemメソッドが最初に2回呼び出されました
私のアプリケーションでは、ViewPagerを使用しました。好き、
そして、FragmentActivityにViewPagerオブジェクトとViewPagerAdapter(FragmentPagerAdapterを拡張する)オブジェクトを作成します。
そして、Adapterクラスは次のようなものです。
そして、MyFragmentクラスでは、
onResumeでは、wigetsオブジェクトを共通の静的変数に格納する必要があります。
FragmentActivityのUserクラスから取得したテキストビューを更新する必要があります。 私の問題は、getItem()メソッドが最初に2回呼び出されることです 。事実上、エミュレーターに表示されるビューは0番目のインデックスですが、FragmentActivityで1番目のインデックス値を取得しました。getItem()メソッドの呼び出しを2回停止すると、FragmentActivityで0番目のインデックスTextView参照を取得できます。
これを行うための最良の方法を教えてください。
ありがとう
android - PagerAdapter クラスの instantiateItem が onCreate で自動的に 2 回呼び出される
ビューページャーを初めて使用します。ビューページャーを使用してビューを作成したいのですが、ここではすべてが動的であるため、この方法に従いました。私の問題は、作成時にinstantiateItem()が2回呼び出されることです。
オンクリエイト
android - 画面の向きが変更された後、ViewPager のアダプターからアイテムを破棄する
ViewPager
そのため、画面の向きが変更された後、 から 1 ページを破棄 (削除) することに問題があります。次の行で問題を説明してみます。
FragmentStatePagerAdapter
のアダプターとViewPager
、エンドレス ビュー ページャーがどのように機能するかを説明する小さなインターフェイスを使用しています。その背後にある考え方は、最後に到達するまで右にスクロールできるということですViewPager
。API 呼び出しからさらに結果をロードできる場合は、結果が来るまで進行状況ページが表示されます。
ここまでは問題ありませんでしたが、ここで問題が発生します。このロード プロセス中に画面を回転させた場合 (これは、基本的に である API 呼び出しには影響しませんAsyncTask
)、呼び出しが戻ると、アプリがクラッシュし、次の例外が発生します。
ライブラリのコードを少し掘り下げた後mIndex
、フラグメントのデータ フィールドがこの場合よりも少ない0
ようで、これによりその例外が発生します。
ページャー アダプターのコードは次のとおりです。
以下のonPageSelected()
コールバックは、基本的に必要に応じて API 呼び出しを開始します。
ここで、結果を配信した後に API 呼び出しが何を行うかについても言及する価値があります。コールバックは次のとおりです。
さて、setData()
メソッドが を呼び出すのでnotifiyDataSetChanged()
、これは現在配列getItemPosition()
にあるフラグメントに対してを呼び出します。currentFragments
もちろん、POSITION_NONE
このページを削除したいので、進行状況要素に対してはそれが返されるので、これは基本的にdestroyItem()
からコールバックを呼び出しますPagedSingleDataAdapter
。画面を回転させなければすべて正常に動作しますが、前述のように、progress 要素が表示されていて API 呼び出しがまだ終了していないときに画面を回転させるとdestroyItem()
、アクティビティの再起動後にコールバックが呼び出されます。
ViewPager
アクティビティではなく、別のフラグメントで をOutterFragment
ホストしていると言うべきかもしれませんViewPager
。pagerAdapter
のonActivityCreated()
コールバックで をインスタンス化し、OutterFragment
を使用してsetRetainInstance(true)
、画面が回転してpagerAdapter
も が同じままになるようにします (何も変更しないでください)。コードは次のとおりです。
今要約すると、問題は次のとおりです。
ViewPager
インスタンス化され、アクティビティが破棄されて再作成された後 (画面の向きが変更された)から進行状況要素を削除しようとすると、上記の例外が発生します (pagerAdapter
同じままなので、その中のすべても同じままで、参照など...が破棄されていないOutterFragment
ホストはpagerAdapter
、アクティビティから切り離されてから再接続されるだけであるため)。おそらくフラグメントマネージャーで何かが起こるのでしょうが、私は本当に何を知りません.
私がすでに試したこと:
別の手法を使用して進行中のフラグメントを削除しようとしました。つまり
onTaskSuccess()
、フラグメント マネージャーからフラグメントを削除しようとしていたコールバックで、うまくいきませんでした。また、進行状況要素をフラグメント マネージャーから完全に削除するのではなく、非表示にしようとしました。ビューがもう存在しないため、これは 50% 機能しましたが、空のページがあったため、実際に探しているものではありません。
また、画面の向きが変更された後、フラグメント マネージャーに を (再) 接続しようとしまし
progressFragment
たが、これも機能しませんでした。また、アクティビティが再作成された後、進行状況フラグメントを削除してフラグメントマネージャーに再度追加しようとしましたが、機能しませんでした。
destroyItem()
コールバックから手動でを呼び出そうとしましたonTaskSuccess()
が (これは本当に、本当に醜いです)、機能しませんでした。
とても長い投稿で申し訳ありませんが、皆さんが理解できるように、問題をできる限り説明しようとしていました.
任意のソリューション、推奨事項は大歓迎です。
ありがとう!
更新: 解決策が見つかっ たため、これにはしばらく時間がかかりました。問題は、progress フラグメントで destroyItem() コールバックが 2 回呼び出されることでした。それが例外の理由です。私が見つけた解決策は次のとおりです。API呼び出しが終了したかどうかを追跡し続け、この場合は以下のコードで進行中のフラグメントを破棄します。
この apiCallFinished は、アダプタのコンストラクタで false に設定され、onTaskSuccess()
コールバックで true に設定されます。そして、それは本当にうまくいきます!
android - FragmentPagerAdapter の問題
フラグメントごとに異なるレイアウトをロードし、各ページに異なる機能を提供できるように、viewpager とフラグメントを使用してスライドスクリーンを作成しようとしています。
これを達成するためにチュートリアルに従いました。
カーソルを合わせたときに発生するエラーpublic Fragment getItem(int arg0)
: The return type is incompatible withFragmentPagerAdapter.getItem(int)
およびエラー #2: コンストラクターFragmentPagerAdapter(FragmentManager)
が未定義です --> ホバリング時にこれを取得しますsuper(fm);
android - 高さを WRAP_CONTENT として ViewPager に設定しない
ViewPager 内に画像があります。機能しないため、Wrap_CONTENT を ViewPager の高さとして設定できないことを読みました。画像のサイズが異なる場合があるため、画像を適切な縦横比で表示するにはどうすればよいですか。では、これを達成するために何ができるでしょうか。
提案してください。
android - photoviewおよびphotoviewattacherを使用した削除時のViewpagerビュー更新エラー
ギャラリーアプリケーションを作成するために、ChrisBanesオープンソースフォトビューライブラリのフォトビューとViewPager内のUniversalImagerLoaderライブラリを使用しました。問題は、画像を削除しようとすると、SDカードから画像ファイルが削除され、関連するデータリストが更新され、notifyDataSetChagned()を呼び出しても何も起こらず、ビューはページャー内に残り、変更されないことです。
getItemPosition()をオーバーライドしてPOSITION_NONEを返すと、PhotoAttacherから次のエラーが返されます。E/ AndroidRuntime(18407):java.lang.IllegalStateException:ImageViewはもう存在しません。このPhotoViewAttacherはもう使用しないでください。
それがなければ、私が言ったように、変化はありません。何か案は?
コードへのリンクは次のとおりです。
android - ViewPagerの特定のフラグメントにボタンを追加
私はAndroidSDKでViewPagerを見つけ、それをいじっていました。基本的に、私の最後のタスクは、YouTube、Facebook、Twitterのフィードをすべて1つのアプリで作成し、ViewPagerとFragmentsを使用して3つのカテゴリ間をスクロールすることです。これらの作業を理解するのに少し苦労しています。具体的には、特定のフラグメントに要素(ボタン)を追加する方法を教えてください。これまでの私のコードは次のとおりです。