0

ここでは、サーバーから応答を取得して表示しようとしていますが、表示できませんでした。応答テキストがテキストビューに表示されず、文字列のデフォルト値が挿入されています。どうすれば達成できますか?私の目標。そして、なぜ私のコードはタスクを完了できないのですか。

これが私のAndroidプログラムです:

public class Chico extends Activity {

GrabURL grab;
TextView mRespond;
String line;

@Override
public void onCreate(Bundle savedInstanceState) {

    //create the activity
    super.onCreate(savedInstanceState);

    //set up the layout
    setContentView(R.layout.activity_chico);

    mRespond = (TextView) findViewById(R.id.Respond);
    mRespond.setVisibility(View.GONE);

    grab = new GrabURL();
      line = "line";

    //set up the button for check in
    Button btnin = (Button) findViewById(R.id.inbutton);
    btnin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            //set the values
            grab.onPreExecute("TechID", Build.SERIAL);
            grab.onPreExecute("Type", "Checkin");
            //set the destination and send the request
            grab.execute(new String[]{"http://192.168.1.150/Me/testing.php"});
            //close the activity
            mRespond.setVisibility(View.VISIBLE);
            mRespond.setText(line);
            //finish();
        }
    }); 
}

private class GrabURL extends AsyncTask<String, Void, Void>{
    //ArrayList object for storing the string pairs
    ArrayList<NameValuePair> nameValuePairs;

    public GrabURL() { 
        //constructor of the class
        nameValuePairs = new ArrayList<NameValuePair>(); 
      } 


    protected void onPreExecute(String key, String value) {
        //store the pair of values into the ArrayList 
        nameValuePairs.add(new BasicNameValuePair(key,value));
        }

    @Override
    protected Void doInBackground(String... urls) {
        // TODO Auto-generated method stub
        //Operation being executed in another thread
        try{
            //set up the type of HTTPClient
            HttpClient client = new DefaultHttpClient();
            //set up the location of the server
            HttpPost post = new HttpPost(urls[0]);
            //translate form of pairs to UrlEncodedFormEntity 
            UrlEncodedFormEntity ent = new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8);
            //set up the entity being sent by post method
            post.setEntity(ent);
            //execute the url and post the values
            HttpResponse responsePOST = client.execute(post); 
            HttpEntity resEntity = responsePOST.getEntity();
            line = EntityUtils.toString(resEntity);
         } catch (Exception e) {
             //catch the exception
            line = "Can't connect to server";
         }
        return null;
    }

    protected void onPostExecute(Void unused) {
        Toast.makeText(getApplicationContext(), "Value updated", Toast.LENGTH_SHORT).show();
    }
    }

}

そしてここにphpファイルがあります、それはただ一行を印刷します:

<?php
print "testing";    
?>
4

1 に答える 1

1

このコードをあなたAsyncTaskのに移動してくださいonPostExecute()

...
mRespond.setVisibility(View.VISIBLE);
mRespond.setText(line);
于 2012-07-28T03:55:59.303 に答える