【发布时间】:2015-12-19 13:17:09
【问题描述】:
Activity.java
//Activity stuff
MyClass mc = new MyClass();
mc.getText();
public void dosomething() {
textview.setText(mc.getText());
}
MyClass.java
class MyClass {
String text;
public void setText() {
class GetTextFromWEB extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String url = urls[0];
String output;
//Getting text from web
return output;
}
@Override
protected void onPostExecute(String _text) {
text = _text;
}
}
String url = "google.com";
//Doing with url something
new GetText().execute(url);
}
public String getText() {return text;}
}
问题是 - 在活动 setText 中做得更快,然后 AsyncTask 完成它的工作。
所以当 setText 运行时,它就像setText(null)
我需要检查活动,异步结束,所以我要设置我的文本。
我希望我解释了它
而且我什至不需要完全 AsyncTask,我需要 jsoup 工作,所以如果有另一个线程类的解决方案,jsoup 可以工作,我可以使用它
编辑
class GetLyrics extends AsyncTask<String, Void, String> { //Class for getting lyrics
private Context con;
public GetLyrics(Context con) {
this.con = con;
}
@Override
protected String doInBackground(String... urls) {
//do something
}
@Override
protected void onPostExecute(String _lyrics) {
lyrics = _lyrics;
con.runOnUiThread(new Runnable() {
@Override
public void run() {
((TextView) findViewById(R.id.lyricsOutput)).setText(lyrics);
}
});
}
}
【问题讨论】:
-
@NigamPatro 谢谢,我会试试
-
@NigamPatro 不,这对我不起作用,因为我无法在
onPostExecute和new Asynctaskclass().execute(url);中设置Text 我需要在另一个地方听... -
您是否创建了监听器类并按照给定的方式调用了
onPostExecute()中的方法? -
这就是我在那里给出的答案,你能发布你到目前为止所尝试的内容吗?这样我就可以根据您的代码给出适当的解释。
标签: java android android-asynctask