新しいcompileSdkVersion 26
を使用している間は、フラグメント(android.support.v4.app.Fragment
)にキャスティングは不要になりました。publicを使用する方法<T extends View> T findViewById(int id);アクティビティAndroidでsdk 26をコンパイルしますか?
:しかし、私は、私は、問題のいくつかの予選の結果を持ってAppCompatActivity
で同じメソッドを取得することはできません。断片内に新しいfindViewById()
方法が常に使用され、これに対応しています。
public <T extends android.view.View> T findViewById(int id) { /* compiled code */ }
B。当初はこれはアクティビティで何かをすることを意味しますが、getActivity().findViewById()
を使用すると同じことが行われます。
c。アクティビティが別のクラスから継承されていると思うようになりますが、上に向かってトレースすると、getActivity()
とAppCompatActivity
が見つかりました。両方とも 'FragmentActivity'
dです。アクティビティでfindViewById()
メソッドを使用しようとしている間、両方のメソッドが提案されていますが、最終的にはキャストが必要です。
e。私はsimilar question hereを見つけました。 新しいfindViewById()
の方法はView
に属しているので、View
の中にView
というようなものを見つけようとしていますが、このようなものはTextView tv = otherView.findViewById()
ですが、まだキャストが必要です。
アクティビティで新しいfindViewById()
メソッドを使用するにはどうすればよいですか?
"しかし、私はAppCompatActivityで同じ方法を得ることができません" - あなたは '26.0.0'を使用しています'appcompat-v7'の? ['AppCompatActivity'が' findViewById() '](https://developer.android.com/reference/android/support/v7/app/AppCompatActivity.html#findViewById(int))から' T'を返すように更新されました。 – CommonsWare
@CommonsWare答えがわかりました!私は 'compile 'com.android.support:appcompat-v7:26。+''を使用していました。以前は変更できませんでした。なぜなら、私が '0.0'バージョンで試しても、依存関係がなくなって同期が失敗し、私はこの答えに私を導いてくれます。https://stackoverflow.com/a/45481709/4017501 Androidスタジオの人々がデフォルトで作るのを待つだけです – cutiko