0

onPostExecuteにtvStatus(TextView)を追加し、progressDialogボックスを削除したことがわかります。コードをデバッグすると、値がtvStatusに設定されていることがわかりますが、画面に表示されません。

また、onPostExecute関数が呼び出された後、progressDialogの回転が停止します。なぜ、どのように解決するか知っている人はいますか?

これは、onCreateメソッドで設定されます。

tvStatus = (TextView) this.findViewById(R.id.tvStatus);

コード:

public class TcpTask extends AsyncTask<Void, Void, Integer> {

    @Override
    protected Integer doInBackground(Void... params) {
        try {
            //set up a Connection
            Socket s = new Socket("88.26.249.133", TCP_SERVER_PORT);
            InputStream inputstream = (s.getInputStream());
            DataInputStream in = new DataInputStream(inputstream);
            DataOutputStream out = new DataOutputStream(s.getOutputStream());
            s.setSoTimeout(20*1000);
            //prepare output message
            outBuffer[0] = 48;
            outBuffer[1] = 51;
            outBuffer[2] = 49;
            outBuffer[3] = 49;
            outBuffer[4] = 0;
            outBuffer[5] = 0;
            //send output message
            out.write(outBuffer);
            out.flush();
            //To check in logCat
            Log.i("TcpTask", "sent: " + outBuffer);
            //check # available data
            //and use it as byte length
            avail = in.available();
            byte[] inBuffer = new byte[avail];
            //accept server response
            while ((nob = in.read(inBuffer)) != -1) {
            }
            //close stream
            in.close();
            for (int i = 7; i < avail-7; i += 2) {
                lowByte = inBuffer[i];
                highByte = inBuffer[i+1];
                if (lowByte < 0) {
                    result = lowByte + 256 + (highByte * 256);
                } else {
                    result = lowByte + (highByte * 256);
                }
            }
            //close connection
            s.close();
            //To Check in logCat
            Log.i("TcpTask", "received: " + inBuffer);
            // if the host name could not be resolved into an IP address.   
        } catch (UnknownHostException e) {
            e.printStackTrace();
            Log.i("myStatus", "TcpClient: Host name could not be resolved");
            // if an error occurs while creating the socket.
        } catch (IOException e) {
            e.printStackTrace();
            Log.i("myStatus", "TcpClient: ERROR");
        } finally {
            Log.i("TcpTask", "TCPClient: Finished");
        }
        return result;
    }

    @Override
    protected void onPostExecute(Integer result) {
        tvStatus.append(Integer.toString(result) + System.getProperty("line.separator"));
        if (myStatus.this.progDialog != null) {
            myStatus.this.progDialog.dismiss();
        }
    }
}
4

2 に答える 2

0
tvStatus.setText(tvStatus.getText().toString+(Integer.toString(result) + System.getProperty("line.separator")));

これは、Text値をtextViewに設定する方法です

于 2012-05-10T10:00:25.050 に答える
0

使用する

tsStatus.setText(result+" "+ System.getProperty("line.separator");
于 2012-05-10T10:04:00.630 に答える