mình có đoạn code thế này
`public class Test{
public static String ouput = null;
class Task extends AsyncTask<String, Void, String>{
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
output = s;
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected String doInBackground(String... params) {
String t = params[0];
return t;
}
}
public String result(){
input = "day la noi dung ket qua";
Task task = new Task();
task.execute(input);
return ouput;
}
}
Mình hiểu đoạn code trên thế này:
- khi gọi task.excute(input), thì giá trị input được truyền vào params[0] trong hàm doInBackground()
- biến t trong hàm doInBackground() sẽ lưu lại giá trị này sau đó return t và kêt quả chuyển đến biến s trong hàm onPostExcute()
- trong hàm onPostExcute(), có biến output (toàn cục) được gán bằng s.
- vậy sau khi thực hiện xong task.excute ta sẽ được output = s (= “day la noi dung ket qua”);
- và khi mình gọi đến hàm result thì kết quả phải là “day la noi dung ket qua”, nhưng thực chất kết quả lại là “null”
m.n giải thích hộ mình tại sao kết quả lại là null. Và nếu muốn kết quả là “day la noi dung ket qua” thì phải sửa thế nào?
mình xin cảm ơn