Android 带多个构造函数/不带构造函数的异步任务
我不能将多个构造函数用于asynctask。我需要分别使用FetchTask(类别)和FetchTask(textview)。[未获取任务(类别,文本视图)] 可以使用多个构造函数吗?或者我可以为asynctask使用不同的构造函数/方法吗Android 带多个构造函数/不带构造函数的异步任务,android,constructor,android-asynctask,Android,Constructor,Android Asynctask,我不能将多个构造函数用于asynctask。我需要分别使用FetchTask(类别)和FetchTask(textview)。[未获取任务(类别,文本视图)] 可以使用多个构造函数吗?或者我可以为asynctask使用不同的构造函数/方法吗 public class FetchTask extends AsyncTask<String, Void, String> { TextView Txt; private Category category; pub
public class FetchTask extends AsyncTask<String, Void, String> {
TextView Txt;
private Category category;
public FetchTask (final Category cat) {
this.category = cat;
}
public FetchTask(TextView outputTxt) {
super();
Txt = outputTxt;
}
@Override
protected String doInBackground(String... str) {
String Str = str[0];
return Str;
}
@Override
protected void onPostExecute(String result) {
Txt.setText(result);
}
}
公共类FetchTask扩展了AsyncTask{
文本视图;
私人类别;
公共获取任务(最终类别cat){
这个类别=猫;
}
公共获取任务(文本视图输出文本){
超级();
Txt=输出文本;
}
@凌驾
受保护的字符串doInBackground(字符串…str){
字符串Str=Str[0];
返回Str;
}
@凌驾
受保护的void onPostExecute(字符串结果){
Txt.setText(结果);
}
}
致命异常:AsyncTask#2
java.lang.RuntimeException:执行doInBackground()时出错。您可以使用多个构造函数。 这段代码编译起来很有趣,还有其他问题,但这与主题无关 希望这有帮助,
Yaron您可以使用多个构造函数。 查看您的代码:
public FetchTask (final Category cat) {
this.category = cat;
}
如果使用上述构造函数启动AsyncTask
,则会出现错误。
见您没有使用第一个构造函数初始化
Txt
。
我认为您不需要调用
super()代码>来自构造函数。你说“不能”是什么意思?你有没有试过并犯过错误?如果有,是什么错误?我从来没有尝试过使用多个,但我不知道为什么你不能。另外,这是一个内部类还是单独的文件?为什么不能使用多个构造函数?你有什么错误吗?如果是的话,你得到了什么错误,你从哪里得到的?而且,不需要调用super()除非您明确需要调用默认构造函数,否则请在构造函数中使用code>。在您的情况下,它是不需要的。它给出了致命的异常:AsyncTask#2错误。我可以使用FetchTask(category,textview),但不能单独使用它们。如果你的FetchTask
是你活动的一个子类,那么在没有构造函数的情况下使用result呢。然后将outputText
textView
作为主类(活动类)的类成员,您可以在子类中直接使用它;我想使用FetchTask(TextView OutputText)启动AsyncTask。我的主类包含FetchTask作为子类:FetchTask ft=newFetchTask(mytextview);ft.execute(位置);代码有错误吗?或者我必须添加到这些代码中的任何内容?`ft.execute(position);`这里的位置是什么?它是一个寻呼机;我将viewpager与asnctask一起使用。而doInBackground包含了它的位置;position=strYes,但在我缩短的主代码中还有一些代码。实际上,我意识到如果可能的话,我可能需要在doInBackground启动之前启动FetchTask(最终类别cat)?因为FetchTask(最终类别cat)有一个设置值的方法,doInBackground使用它。因此,必须在doInBackground开始之前设置它
@Override
protected void onPostExecute(String result) {
Txt.setText(result);
}