从线程Android Java返回字符串 [英] Return a String from a Thread Android Java
本文介绍了从线程Android Java返回字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用一个线程来执行HttpURLConnection并从数据库中获取数据.下面的代码表示我想要完成的工作,但是在行上却出现错误
I am using a Thread to perform an HttpURLConnection and get data from my database. The code below represents what I would like to accomplish but I get an error on the line
str_Data =约翰·多伊";
错误:从内部类内部访问变量'str_Data'
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.MainActivity);
String str_Name = "";
str_Name = setDataToText(str_Url);
}
private String setDataToText(String urlStr) {
final String url = urlStr;
String str_Data = "";
new Thread() {
public void run() {
//A code to retrieve data is executed
//Data is Converted and added to the string str_Data;
str_Data = "John Doe";
}
}
return str_Data;
}
我想将新Thread()上run()操作内的str_Data值设置为从数据库中恢复的数据.
I would like to set the value of str_Data inside the run() operation on my new Thread() to the data that was recovered from my Database.
这是我如何解决的问题,请让我知道使用此方法时不是很好的做法,谢谢您的帮助:
THIS IS HOW I SOLVED THE PROBLEM, Let me know if it is not good practice when using this method, thanks for the help:
String str_Data = "";
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.MainActivity);
setDataToText(str_Url);
txtName.setText(str_Data);
}
private void setDataToText(String urlStr) {
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
//A code to retrieve data is executed
//Data is Converted and added to the string str_Data;
str_Data = "John Doe";
}
}).start();
}
推荐答案
使用界面使其正常工作.
Use interface to make it work properly.
private interface DataListener{
void onDataReady(String data);
}
private String str_Name = "";
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.MainActivity);
setDataToText(str_Url, new DataListener() {
@Override
public void onDataReady(String data) {
str_Name = data;
System.out.println(str_Name);
}
});
}
private void setDataToText(final String urlStr,final DataListener dataListener) {
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
//A code to retrieve data is executed
//Data is Converted and added to the string str_Data;
String str_Data = "John Doe";
dataListener.onDataReady(str_Data);
}
}).start();
}
这篇关于从线程Android Java返回字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文