カスタムビュー「ClearableTextView」があり、相対レイアウト内に EditText とボタンがあります。ビューはレイアウト ファイルを拡張することによって作成されるため、2 つのビューには ID があります。
また、2 つのフラグメントがあり、それぞれが独自のレイアウトを膨らませます。この両方のレイアウトには、他のビュー内に私のカスタム ClearableTextView が含まれています。
同じ ID を再利用するのは良くないことであり、結果が予測できないことはわかっていますが、名前がフランス語に聞こえる Google の担当者は、子ビューが親内で一意の ID を持っている限り、正しい ID を見つけるのに問題はないはずだと言ったことがあります。 . 私の検索したビューには、共通のルート ビューさえありません。ビューが含まれているビューは、異なるフラグメントによって所有されています。
次のように、フラグメント A で EditText の参照を探します。
v= inflater.inflate(layoutA);
TextView tvA=v.findViewById("someLayoutUniqueID").findById(ClearableTextView_uniqueID_A).findViewById(editTextID);
フラグメント B の EditText の場合:
v= inflater.inflate(layoutB);
TextView tvA=v.findViewById("anotherLayoutUniqueId").findById(ClearableTextView_uniqueID_B).findViewById(editTextID);
ID が一意であると言うとき、それはプロジェクト内のすべてのレイアウト内で一意であることを意味します。
奇妙なこと: Fragment A を作成します。問題があるかどうかはわかりませんが、FragmentStatePagerAdapter を使用して Fragment を viewPager にアタッチします。EditText に何か入力します。次に、Fragment B を作成し、viewPager から A を削除し、Fragment B を viewPager にアタッチするボタンを押します。フラグメント B では、EditText にフラグメント A のテキストが含まれています!!! なんで?
ビューページャーが各フラグメントのビューを結合することは知っていますが、私の場合は、常に 1 つのフラグメントしかアタッチされていないため、そうすべきではありません。そして、一意の ID を持つ親内の EditText ビューを探しています。何か案は?