0

我想将我想启动的类作为参数发送,因为这个异步任务想用来启动不同的活动。

例子:

.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
    new taskIntent().execute(**example1.class**);      
}
}

.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
    new taskIntent().execute(**example2.class**);      
}
}

private class taskIntent extends AsyncTask<String, Integer, Void> {
    ProgressDialog dialog;

    @Override
    protected Void doInBackground(String... params) {

        return null;
    }

    @Override
    protected void onPreExecute() {
        dialog = ProgressDialog.show(Calendar.this, "",
                "Loading...", true);
        dialog.show();
    }
    protected void onPostExecute(Void unused){
        Intent intent = new Intent(Calendar.this, **parameter[0]**);
        startActivity(intent);
        finish();

        dialog.dismiss();
    }

}

如何将类作为参数发送以在意图中使用它?

谢谢,对不起我的英语不好

4

2 回答 2

2

我不确定您使用 a 的方法AsyncTask,但您可以将 a 传递给Class构造函数:

private class taskIntent extends AsyncTask<String, Integer, Void> {
    ProgressDialog dialog;
    Class<?> clazz;
    ...
    public taskIntent(Class<?> clazz){
        this.clazz = clazz;
    }
    ...
    protected void onPostExecute(Void unused){
        Intent intent = new Intent(Calendar.this, clazz);
        ...
    }
}

然后使用它:

new taskIntent(Example1.class).execute();

请注意,Java 约定是类名以大写字母开头,所以TaskIntent不是taskIntent

于 2012-11-05T13:44:59.810 回答
1

您必须将参数从字符串更改为类。虽然如果它什么都不做,我不明白 AsyncTask 的意义。

于 2012-11-05T13:39:39.103 回答