JavaクラスのメソッドがfindViewByIdを返すようにするにはどうすればよいですか?

ロボット死神:

私はレイアウトファイルにすべての要素にIDを付け、JavaクラスにはLocate()というメソッドを用意しました。私が返すのは:

return findViewById(R.id.star);

しかし、シンボルfindViewByIdを解決できないと書かれています。また、メソッドの戻り値の型として何を宣言すればよいかわかりません。
だから私のコードは次のようになります。

public class Tank {
    public int x;
    public int y;
    public String face;

    public Tank(int xPos,int yPos){
        x=xPos;
        y=yPos;
    }

    public RETURNTYPE locate(){
        return findViewById(R.id.star);
    }
}

戻り値の型がわからないので、findViewByIdを解決できません。このクラスを手動で作成しました(自動生成ではありません)。

フレッド :

findViewByIdはのメソッドでViewあり、ActivityのメソッドであるためViewActivityを呼び出すにまたはのインスタンスが必要です。

おそらく、アクティビティまたはビュー内にいるため、今は機能しますが、別の場所に移動したら、そのアクティビティまたはビューで呼び出す必要があります。

View locate(Activity activity) {
  return activity.findViewById(R.id.star);
}

View locate(View view) {
  return view.findViewById(R.id.star);
}

View戻り値の型として戻ることに注意してくださいこれは間違いではありませんが、実際には最善ではなく、さらに改善することができます。

気づいた場合finViewByIdは、を拡張するジェネリック型を返しますView言い換えれば、具体的なビュー、したがって、上記のメソッドを次のように書き直すことができます。

<T extends View> T locate(Activity activity) {
  return activity.findViewById(R.id.star);
}

<T extends View> T locate(View view) {
  return view.findViewById(R.id.star);
}

なぜこれが良いのですか?それを正しいものにキャストする必要がないからです。ジェネリックがないと、次のように呼び出す必要があります。

TextView t = (TextView) locate();

ジェネリックを使用すると、コードがよりクリーンになります。

TextView t = locate();

PS:少し前findViewByIdに戻りましたが実際には戻りView、戻り値の型をキャストしていました。現在、Googleはジェネリック向けに変更しており、変更する必要はありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

JavaクラスのメソッドでAndroid StudioのfindViewByIdを返すにはどうすればよいですか?

分類Dev

クラスのiterメソッドがforループを実行せずに値を返すようにするにはどうすればよいですか?

分類Dev

Javaクラスに特定のメソッドが含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

Pythonで既存のクラスにメソッドを追加するにはどうすればよいですか?

分類Dev

メソッドがブロックせずに開始されたタスクを返すようにするにはどうすればよいですか?

分類Dev

@InjectMocksクラスのメソッドをモックするにはどうすればよいですか?

分類Dev

Retrofit onResponseメソッドによって返されるJsonデータを他のクラスに送信するにはどうすればよいですか?

分類Dev

別のクラスからメソッドを実行するにはどうすればよいですか?

分類Dev

XamariniOSに特定のメソッド/クラス/ APIが存在するかどうかを確認するにはどうすればよいですか?

分類Dev

XamariniOSに特定のメソッド/クラス/ APIが存在するかどうかを確認するにはどうすればよいですか?

分類Dev

クラス(Ruby)のメソッドで名前を表示するにはどうすればよいですか?

分類Dev

クラスメソッドで自分自身を返すにはどうすればよいですか?

分類Dev

階層の親クラスのメソッドを使用するにはどうすればよいですか?

分類Dev

JNIでC ++からjava.lang.Stringを返すJavaメソッドの戻り値にアクセスするにはどうすればよいですか?

分類Dev

クラスメソッドの署名を確認するにはどうすればよいですか?

分類Dev

pickerViewクラスのdidSelectRowメソッドを実装するにはどうすればよいですか?

分類Dev

クラスのprintメソッドを送信するにはどうすればよいですか?

分類Dev

クラス内のメソッドにアクセスするにはどうすればよいですか?

分類Dev

Netbeans Java RESTクライアントがPostメソッドにアクセスできるようにするにはどうすればよいですか?

分類Dev

C#UnityのAndroidJavaObjectクラスのメソッドを知るにはどうすればよいですか?

分類Dev

クラスにメソッドを動的に追加するにはどうすればよいですか?

分類Dev

メソッドが子クラスによって上書きされたかどうかを確認するにはどうすればよいですか?

分類Dev

Pythonクラスメソッドに独自のフィールドを参照するように指示するにはどうすればよいですか?

分類Dev

メソッドを1つのクラスだけにアクセスできるようにするにはどうすればよいですか?

分類Dev

派生クラスのどのメソッドが実装されていないかを確認するにはどうすればよいですか?

分類Dev

関数/メソッド/クラスが組み込みのPythonかどうかを確認するにはどうすればよいですか?

分類Dev

Javaのメソッド内に存在するクラスのオブジェクトを作成するにはどうすればよいですか?

分類Dev

AsyncTaskクラスにメソッドを追加するにはどうすればよいですか?

分類Dev

クラスメソッドを適切に作成するにはどうすればよいですか?

Related 関連記事

  1. 1

    JavaクラスのメソッドでAndroid StudioのfindViewByIdを返すにはどうすればよいですか?

  2. 2

    クラスのiterメソッドがforループを実行せずに値を返すようにするにはどうすればよいですか?

  3. 3

    Javaクラスに特定のメソッドが含まれているかどうかを確認するにはどうすればよいですか?

  4. 4

    Pythonで既存のクラスにメソッドを追加するにはどうすればよいですか?

  5. 5

    メソッドがブロックせずに開始されたタスクを返すようにするにはどうすればよいですか?

  6. 6

    @InjectMocksクラスのメソッドをモックするにはどうすればよいですか?

  7. 7

    Retrofit onResponseメソッドによって返されるJsonデータを他のクラスに送信するにはどうすればよいですか?

  8. 8

    別のクラスからメソッドを実行するにはどうすればよいですか?

  9. 9

    XamariniOSに特定のメソッド/クラス/ APIが存在するかどうかを確認するにはどうすればよいですか?

  10. 10

    XamariniOSに特定のメソッド/クラス/ APIが存在するかどうかを確認するにはどうすればよいですか?

  11. 11

    クラス(Ruby)のメソッドで名前を表示するにはどうすればよいですか?

  12. 12

    クラスメソッドで自分自身を返すにはどうすればよいですか?

  13. 13

    階層の親クラスのメソッドを使用するにはどうすればよいですか?

  14. 14

    JNIでC ++からjava.lang.Stringを返すJavaメソッドの戻り値にアクセスするにはどうすればよいですか?

  15. 15

    クラスメソッドの署名を確認するにはどうすればよいですか?

  16. 16

    pickerViewクラスのdidSelectRowメソッドを実装するにはどうすればよいですか?

  17. 17

    クラスのprintメソッドを送信するにはどうすればよいですか?

  18. 18

    クラス内のメソッドにアクセスするにはどうすればよいですか?

  19. 19

    Netbeans Java RESTクライアントがPostメソッドにアクセスできるようにするにはどうすればよいですか?

  20. 20

    C#UnityのAndroidJavaObjectクラスのメソッドを知るにはどうすればよいですか?

  21. 21

    クラスにメソッドを動的に追加するにはどうすればよいですか?

  22. 22

    メソッドが子クラスによって上書きされたかどうかを確認するにはどうすればよいですか?

  23. 23

    Pythonクラスメソッドに独自のフィールドを参照するように指示するにはどうすればよいですか?

  24. 24

    メソッドを1つのクラスだけにアクセスできるようにするにはどうすればよいですか?

  25. 25

    派生クラスのどのメソッドが実装されていないかを確認するにはどうすればよいですか?

  26. 26

    関数/メソッド/クラスが組み込みのPythonかどうかを確認するにはどうすればよいですか?

  27. 27

    Javaのメソッド内に存在するクラスのオブジェクトを作成するにはどうすればよいですか?

  28. 28

    AsyncTaskクラスにメソッドを追加するにはどうすればよいですか?

  29. 29

    クラスメソッドを適切に作成するにはどうすればよいですか?

ホットタグ

アーカイブ