ProgressDialogのOnCancellistenerでの仕上げアクティビティは機能しません

StackOverflow https://stackoverflow.com/questions/9382038

  •  28-10-2019
  •  | 
  •  

質問

私のアクティビティでは、Webサービスからいくつかのデータをロードします。この間、ユーザーにProgressDialogを表示します。ユーザーに、D-PADキーを押すとアクティビティを閉じることができます。私はそれを次のようにしました:

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 インターフェース。しかし、この方法は、ダイアログ中に押し戻すときに呼び出されません。ダイアログは消えますが、オンキャンセルは呼び出されません。

y?

役に立ちましたか?

解決

おそらくそれはAndroidの制限です。ハンドラーを使用して試してみてください

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);
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top