3

私のアプリケーションには、3 つのアクティビティがあります。

1. Login

2. AsyncTask(クラスが違う)

3. Welcome

内のすべての情報を受信した後、Login Activityに移動しAsyncTask Activityます。AsyncTaskが完了すると、 に移動しますWelcome ActivityLogin Activityが仕事を終えたらすぐにを閉じたいAsyncTask Activity..

onPostExecite()of で次のコードを使用しようとしていますAsyncTask:

Login.this.finish();

しかし、次のエラーが表示されます: No enclosing instance of the type of Login is accessible in scope..

..Login Activity完了後に閉じる方法を教えてください。AsyncTask

前もって感謝します...

4

2 に答える 2

9

AsyncTaskActivity は LoginActivity とは別のファイルにあるため、次の方法で LoginActivity を終了することはできません。

Login.this.finish();

代わりに、次のコンストラクターを定義できるように、アクティビティ参照を AsyncTaskActivity クラスのパラメーターとして渡す必要があります。

private class AsyncTaskActivity extends AsyncTask<String, Void, String> {

Activity mActivity;
    public AsyncTaskActivity(Activity activity)
    {
         super();
         this.mActivity=activity;
    }
}

アクティビティコールを終了したいときはいつでも

this.mActivity.finish();

LoginActivity に AsyncTaskActivity のオブジェクトを作成する

AsyncTaskActivity asynTask = new AsyncTaskActivity(LoginActivity.this);
于 2012-08-29T04:34:14.667 に答える
2

Ok 。新しいアクティビティを記述した後、onPostExcecute メソッドで finish() を呼び出す必要があります。

手順:

1) ログイン活動

2) 非同期タスク (アプリケーション コンテキストを渡す)

3) 新しいアクティビティを呼び出す

4) onPostExcecute( context.finish()) でログイン アクティビティを終了します。

于 2012-08-29T04:28:49.500 に答える