如何在A类中使用AsyncTask并使其成为B类的弹出对话框

时间:2012-06-12 15:57:06

标签: android android-asynctask

在自己的类中编写了一个AsyncTask。 从B班调用它。 我想让它在A类中展示一些当前正在运行的Activity。 我应该使用runOnUiThread()吗?或者以某种方式setOwnerActivity(Activity)? 我对于出了什么问题一无所知......

这是任务:

public class popTask extends AsyncTask<Void, Void, String> {
    private Context con;

    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);

        final Dialog dialog = new Dialog(con);
        dialog.setContentView(R.layout.custom);
        dialog.setTitle("New & Hot advertise");

        // set the custom dialog components - text, image and button
        TextView text = (TextView) dialog.findViewById(R.id.text);
        text.setText("Android custom dialog example!");
        ImageView image = (ImageView) dialog.findViewById(R.id.image);
        image.setImageResource(R.drawable.yoda);

        Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
        // if button is clicked, close the custom dialog
        dialogButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                dialog.dismiss();
            }
        });

        dialog.show();

    }


    @Override
    protected String doInBackground(Void... params) {
        // TODO Auto-generated method stub
        return null;
    }

    public popTask(Context con){
        this.con=con;
    }
}

1 个答案:

答案 0 :(得分:0)

您可以为此Async任务创建一个构造函数,该构造函数引用了Activity A.

例如:

public popTask(ClassA ref) {
    super();
    this.ref = ref;
    // do stuff
}

然后,使用对Activity的引用,您可以调用activity的方法。如果你想展示一些东西,这个调用总是必须在onProgressUpdate或onPostExecute(从不在doInBackground 上)完成。

希望它有所帮助!