Asynctask与多个构造函数/没有构造函数

时间:2013-04-09 17:52:52

标签: android constructor android-asynctask

我不能使用带有asynctask的多个构造函数。我需要分别使用FetchTask(类别)和FetchTask(textview)。 [NOT FetchTask(category,textview)]

是否可以使用多个构造函数?或者我可以为asynctask使用不同的构造函数/方法吗?

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);        
    }
}

致命异常:AsyncTask#2

java.lang.RuntimeException:执行doInBackground()时发生错误

2 个答案:

答案 0 :(得分:0)

您可以使用多个构造函数。 这段代码编译很有趣,还有其他问题,但这与主题无关。

希望这有帮助, 亚龙

答案 1 :(得分:0)

您可以使用多个构造函数。 看你的代码:

public FetchTask (final Category cat) {    
    this.category = cat;
}

如果您使用上面的构造函数来启动AsyncTask,则会出现错误。 见

 @Override
protected void onPostExecute(String result) {
    Txt.setText(result);        
}

您没有使用第一个costructor初始化Txt。 我认为您无需从构造函数中调用super();