0

TimerTaskを使用してタブ付きアクティビティビューのTextViewを変更したいと思います。
タスククラスのコードは次のとおりです。

    public class QueryServer extends TimerTask {

    public void run(){

        MCQuery mcQuery = new MCQuery(serverAddrress,25565);
        QueryResponse response = mcQuery.basicStat();
        int Onlineplayers = response.getOnlinePlayers();
        int MaxPlayers = response.getMaxPlayers();
        Log.d("MCQuery", "" + Onlineplayers + " OnlinePlayers");

        TextView serverStatus = (TextView) findViewById(R.id.server_status);

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



        serverStatus.setText("Online");

        onlinePlayersView.setText("" + Onlineplayers + "/" + MaxPlayers);
        Log.d("QueryServer", "Querying the server...");

    }
}

これは、タスクを呼び出すクラスです。

    public class FirstTab extends Fragment {

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



            //check Internet connection
            if (isOnline() == true) {

                Log.d("CheckConnection", "The device is connected to the network");
            } else {
                Log.d("CheckConnection", "The device is NOT connected to the network");
            }

            Timer timer = new Timer();
            TimerTask task = new QueryServer();

            //run the QueryServer task every 3 seconds
            timer.schedule(task, 3000, 3000);


             return v;
    }
}

これはエラーです:

08-01 20:43:16.759:E / AndroidRuntime(1030):android.view.ViewRootImpl $ CalledFromWrongThreadException:ビュー階層を作成した元のスレッドのみがビューにアクセスできます。

ありがとうございました。

4

1 に答える 1

0

UIスレッドのビューを変更するメソッドを呼び出す必要があります。痛みのない糸脱毛はおそらくあなたの頼りになる記事です

于 2012-08-01T19:06:31.177 に答える