Android完成()活动无效

时间:2012-08-31 14:54:15

标签: android

当我使用finish();时,我的代码中出现此错误“方法finish()未定义类型SaveImageTask”。我错过了一些声明或任何东西。有人可以指导我这个。

    public class SaveImageTask extends AsyncTask<String , String , String> {

            private Context context;
            private ProgressDialog pDialog;

            boolean bCancelled=false;
            public SaveImageTask(Context context) {
                this.context = context;
            }

            @Override
            protected void onPreExecute() {
                // TODO Auto-generated method stub

                super.onPreExecute();

                pDialog = new ProgressDialog(context);
                pDialog.setIndeterminate(false);
                pDialog.setCancelable(true);
                pDialog.setOnCancelListener(cancelListener);
                pDialog.show();

            }

            @Override
            protected String doInBackground(String... args) {
                // TODO Auto-generated method stub

                // MY STUFF
                return null;   
            }

            @Override
            protected void onPostExecute(String args) {
                // TODO Auto-generated method stub

                pDialog.dismiss();

            }

            OnCancelListener cancelListener=new OnCancelListener(){
                @Override
                public void onCancel(DialogInterface arg0){
                    bCancelled=true;
                    SaveImageTask.this.finish(); // <<----"The method finish() is undefined for the type SaveImageTask"
                }
            };


        }

3 个答案:

答案 0 :(得分:3)

使用SaveImageTask.this.finish();

答案 1 :(得分:2)

 OnCancelListener cancelListener=new OnCancelListener(){
                @Override
                public void onCancel(DialogInterface arg0){
                    bCancelled=true;
                    finish(); // <<----"The method finish() is undefined for the type new DialogInterface.OnCancelListener(){}"
                }
            };

您在这里创建anonymous class。只能在匿名类中直接访问外部类的最终变量和方法。 Activity 's finish不是最终方法。您需要做的是引用“外部”类,即Activity并调用其finish()

ActivityName.this.finish()

注意:你不能像ActivityName.finish()那样进行静态调用,因此引用了活动的对象this

答案 2 :(得分:2)

只需使用,

(Activity(context)).finish();

修改

实际上你必须将你的上下文转换为Activity Context,

然后你可以使用Activity的finish()方法,

类似的东西,

private Activity context;

public SaveImageTask(Context context) {
                this.context = (Activity)context;
            }

现在,只是

context.finish();