0

このasynctaskはさまざまなアクティビティを開始するために使用したいので、開始したいクラスをパラメーターとして送信したいと思います。

例:

.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

これにan を使用するアプローチについてはわかりませんが、 aをコンストラクターにAsyncTask渡すことができます。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 の慣習では、クラス名は大文字で始まることに注意してくださいTaskIntenttaskIntent

于 2012-11-05T13:44:59.810 に答える
1

パラメータを String から Class に変更する必要があります。何もしなければ AsyncTask の要点はわかりませんが。

于 2012-11-05T13:39:39.103 に答える