gpt4 book ai didi

java - 从 AsyncTask 返回一个值到主类

转载 作者:搜寻专家 更新时间:2023-11-01 08:42:51 24 4
gpt4 key购买 nike

我是 android 的新手,我开发了一个应用程序来发布并从 php 服务器获取响应。

异步任务

    class MyTask extends AsyncTask<String, Void, String> {


@Override
protected String doInBackground(String... arg0) {


// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://172.16.110.3/agent_tracking/index.php/api/rest/auth");

try {
// Add your data
List<BasicNameValuePair> nameValuePairs = new ArrayList<>(1);
nameValuePairs.add(new BasicNameValuePair("key", arg0[0]));
// nameValuePairs.add(new BasicNameValuePair("stringdata", "Hi"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
String responseString = EntityUtils.toString(entity, "UTF-8");

return responseString;

} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
return null;
}
}

主类

  Button login = (Button) findViewById(R.id.btn_login);
login.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
EditText username = (EditText) findViewById(R.id.et_user_name);
EditText password = (EditText) findViewById(R.id.et_password);

String user_name = username.getText().toString();
String paswrd = password.getText().toString();
String timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());

String data2 = user_name + "|" + paswrd + "|" + timeStamp;

byte[] data = new byte[0];
try {
data = data2.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String base64 = Base64.encodeToString(data, Base64.DEFAULT);

show_message(base64);
new MyTask().execute(base64);
//postData();
//startActivity(new Intent(MainActivity.this, mainmenu.class));
}
});

我的问题是从 AsyncTask 返回一个名为 responseString 的值。我想从主类中捕获该值并将其显示在消息框中。

我试过这样

     String result = new MyTask().execute(base64);

我收到错误无法比较的类型错误。

谁能帮我把返回的值传给主类

最佳答案

有多种方法可以实现这一点。我正在逐步描述一种方法:

1) 在您的 Activity 中创建一个方法,它将对 Activity 等执行所需的操作。

public void showData(String responseString)
{
tvText.setText(responseString)
}

2) 当您在 asyncTask 中调用您的 asyncTask 传递 Activity 对象时,例如

new MyTask(MainClass.this).execute(base64);

3) 从 onPostExecute 调用 showData 方法,例如:

mainclassObj.showData(response);

关于java - 从 AsyncTask 返回一个值到主类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31134377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com