Java 从其他类指向UI中的对象-Android SDK
我刚刚开始使用Android进行开发,对Java几乎没有经验。我的主要活动中有一个按钮侦听器,但我想执行一个后台任务,更新UI中的文本视图。请参阅下面的代码Java 从其他类指向UI中的对象-Android SDK,java,android,class,Java,Android,Class,我刚刚开始使用Android进行开发,对Java几乎没有经验。我的主要活动中有一个按钮侦听器,但我想执行一个后台任务,更新UI中的文本视图。请参阅下面的代码 btnJSON.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { new BGTask().execute(); } cla
btnJSON.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
new BGTask().execute();
}
class BGTask extends AsyncTask<Void, Void, String> {
protected String doInBackground(Void... params) {
Thread.sleep(2000);
String x = "test";
return (String) x;
}
protected void onPostExecute(String result) {
tvData.setText(result);
}
}
});
btnJSON.setOnClickListener(新建按钮.OnClickListener()
{
公共void onClick(视图v)
{
新建BGTask().execute();
}
类BGTask扩展了异步任务{
受保护字符串doInBackground(无效…参数){
《睡眠》(2000年);
字符串x=“测试”;
返回(字符串)x;
}
受保护的void onPostExecute(字符串结果){
tvData.setText(结果);
}
}
});
但是,当我将BGTask代码的代码移动到一个单独的类文件中时,就无法再更新UI组件tvData了。如何将对该对象的引用传递给BGTask类
谢谢 如果要将任务类移动到另一个文件,您需要做的是:
public class BGTask extends AsyncTask<Void, Void, String> {
private TextView tvData = null;
public BGTask(TextView tv) {
this.tvData = tv;
}
protected String doInBackground(Void... params) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
String x = "test";
return (String) x;
}
protected void onPostExecute(String result) {
if (tvData != null)
tvData.setText(result);
}
}
如果要将任务类移动到另一个文件,需要执行以下操作:
public class BGTask extends AsyncTask<Void, Void, String> {
private TextView tvData = null;
public BGTask(TextView tv) {
this.tvData = tv;
}
protected String doInBackground(Void... params) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
String x = "test";
return (String) x;
}
protected void onPostExecute(String result) {
if (tvData != null)
tvData.setText(result);
}
}