私はコトルには初めてです。他の非常に興味深いものの中でも、according to the documentationというAndroidの拡張機能は、findViewById
を必要とせずにアクティビティのビューを使用できるようにする必要があります。コトリンの合成特性が矛盾します
実はそれは私の輸入にだけこの行を追加することで非常にうまく機能:二つの異なるレイアウトは同じid(合成プロパティのすなわち同じ名前)とウィジェットが含まれている場合
import kotlinx.android.synthetic.main.<layout>.*
問題があり、
id txtTitle
の2つの異なるTextView
です。最初のアクティビティがアクティビティにあり、2番目のアクティビティがアダプタ内で使用されているレイアウトに属しているとします。
最初のTextView(アクティビティのもの)でメソッドを呼び出そうとすると、呼び出しが別のビューで実行されたかのように、予期した結果が表示されません。これの確認として、私がtxtTitle.parent
と呼ぶとき、私は期待されるものではなく、他のtxtTitle
の親と兄弟を見る。
何か間違っていますか? ...
あなたのIDにもっと複雑な名前を使用することをお勧めします:)それは私のケースでもインポートで「再生」できなくなります。 – UneXp
これがあなたの質問に答えるかどうかは分かりませんが、合成呼び出しは 'findviewById'への呼び出しに変換され、すべてのid ** name **は一意の値にマップされているので、重要ではありません*正しい名前のものを使用しているためです。 –
私は想像しましたが、実際には悪いです。私はtxtTitleを持つアクティビティを持っています。このアクティビティの中には、RecyclerViewを持つフラグメントがあります:RecyclerViewの中には、txtTitleを持つビューがあります。私はちょうど私が書いたものを見ているだけです。アクティビティの中でtxtTitleを使用すると、期待される結果が得られません(TextViewのテキストは設定されません)。代わりに、私がアクティビティからfindViewById()を使用すると、正しく動作します... – Massimo