1

在自己的类中编写了一个 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;
    }
}
4

1 回答 1

0

您可以为这个引用了 Activity A 的 Async 任务创建一个构造函数。

例如:

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

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

希望能帮助到你!

于 2012-06-12T19:25:21.470 回答