2012-02-21 12 views
1

私の活動では、Webサービスからデータをロードしていますが、この間にProgressDialogをユーザーに表示します...ユーザーがBACK D-パッドキー。 次のように私はそれを行っている:ProgressDialogのOnCancelListenerの終了アクティビティが機能しません

public class MyActivity implements OnCancelListener { 
    /* ... */ 

    public void startDialog() { 
     ProgressDialog pd = ProgressDialog.show(
      MyActivity.this, // Context 
      "",     // title for dialog 
      "Loading...",  // message for dialog 
      true,    // indeterminate? 
      true,    // cancellable? 
      this    // onCancelListener() 
     ); 
    } 

    @Override 
    public void onCancel(DialogInterface dialog) { 
     // I want to finish() this activity when dialog is canceled 
     finish(); 
    } 
} 

あなたは、私がでonCancelダイアログのOnCancelListenerインタフェースの()メソッドを現在の活動を終えていていることがわかります。しかし、ダイアログの最中にBACKを押すとこのメソッドは呼び出されません。ダイアログは消えますが、onCancelは呼び出されません。

答えて

2

おそらくアンドロイドの制限です。ハンドラを使用して試してください

public class MyActivity implements OnCancelListener { 
    /* ... */ 

    private Handler mHandler = new Handler(){ 

     @Owerride 
     public void handleMessage(Message message) { 
     switch (message.what) { 
     case 1:{ 
      finish(); 
     } break; 
      } 
     } 
    }; 

    public void startDialog() { 
     ProgressDialog pd = ProgressDialog.show(
      MyActivity.this, // Context 
      "",     // title for dialog 
      "Loading...",  // message for dialog 
      true,    // indeterminate? 
      true,    // cancellable? 
      this    // onCancelListener() 
     ); 
    } 

    @Override 
    public void onCancel(DialogInterface dialog) { 
     mHandler.sendEmptyMessage(1); 
    } 
} 
+0

はい..これはうまくいきました...ありがとう – Aamir