1

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"
                }
            };


        }
4

3 に答える 3

3

使用するSaveImageTask.this.finish();

于 2012-08-31T14:56:21.720 に答える
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います。匿名クラス内で直接アクセスできるのは、外部クラスの最終変数とメソッドのみです。は最終的な方法ではありませんActivityfinishあなたがする必要があるのは、'outer'クラスを参照することですActivityfinish()

ActivityName.this.finish()

ActivityName.finish()注:アクティビティのオブジェクトの参照のように静的な呼び出しを行うことはできませんthis

于 2012-08-31T15:02:14.670 に答える
2

使用するだけで、

(Activity(context)).finish();

編集:

実際には、コンテキストをアクティビティコンテキストにキャストする必要があります。

finish()次に、アクティビティの方法を使用できます。

何かのようなもの、

private Activity context;

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

今、ちょうど

context.finish();
于 2012-08-31T15:08:06.840 に答える