0

私はJavaとAndroidの開発に不慣れで、エラーを修正できません。変数を使用してaのテキストを変更したいTextViewのですが、ビュークラスは静的です。コードは次のとおりです。

    public static class FirstTab extends Fragment {

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.first_tab, null);

        new Thread() {
            public void run() {

                MCQuery mcQuery = new MCQuery(serverAddress, 25565);
                QueryResponse response = mcQuery.basicStat();
                int Onlineplayers = response.getOnlinePlayers();
                Log.d("MCQuery", "" + Onlineplayers + " Online Players");

            }
        }.start();

        TextView onlinePlayersView = (TextView) findViewById(R.id.online_players);
        onlinePlayersView.setText(Onlineplayers);

        return v;
    }
}

findViewById(int)エラーは次のとおりです。「タイプActivityから非静的メソッドへの静的参照を作成できません」

どうすればこの問題を解決できますか?

4

1 に答える 1

4

これは、他のクラスの宣言内にネストされたクラスであり、メソッド findViewById() は最上位クラスのものですが、静的ではありませんか? それが正しい場合、それが問題です。内部クラス static を定義すると、いわば別のトップレベル クラスになります。メソッド findViewById() は静的ではないため、最上位の宣言されたクラスのインスタンス オブジェクトが必要ですが、クラス FirstView は現在静的です。つまり、インスタンス化するために最上位のインスタンスは必要ありません。クラス。これは問題につながります.FirstViewは最上位クラスのオブジェクトを必要としませんが、findViewById()は必要です。これを修正するには、FirstView を非静的に変更するか、findViewById() を静的に変更するか、このコードの外側で何をしているのか、目的は何かを説明してください。

于 2012-07-30T00:14:54.563 に答える