0

在这里我试图从服务器检索响应并显示它,但是我没有这样做,响应文本没有出现在我的文本视图中,插入了字符串的默认值,请问我该如何实现我的目标。以及为什么我的代码无法完成任务。

这是我的安卓程序:

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

将此代码移至您AsyncTaskonPostExecute()

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