1

私は、いくつかのjsonをリストビュー(バックグラウンド)に解析するアプリに取り組んでいます。現在、リストビューにデータを入力できない場合のエラーに対処しようとしています。

以下のコードに示すように、アラート ダイアログを作成することにより、onPostExecute メソッドでこれを処理しました。

    protected void onPostExecute(String args) {
            progressDialog.dismiss();

            //Shows alert dialog if data is unavailable

            if(args != null && args.equals(noData)){
                 AlertDialog.Builder builder = new AlertDialog.Builder(JsonActivity.this);
                 builder.setTitle("Title");
                 builder.setMessage(noData);
                 AlertDialog alert = builder.create();
                 alert.show();

            }


        }

これは正常に機能しますが、[戻る] ボタンをクリックすると、空のリスト ビューに戻ります。

アラートダイアログが表示されているときに戻るボタンが押されたら、アクティビティを終了したいと思います。

onBackPressed メソッドもオーバーライドしようとしましたが、うまくいきませんでした。

        @Override
    public void onBackPressed() {
        JsonActivity.this.finish();
    }

何かご意見は?

4

1 に答える 1

7
...
builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
    @Override
    public void onCancel(DialogInterface dialog) {
        // if from activity
        finish();
        // if activity is a field
        //activity.finish();
    }

});

ダイアログが表示されているときに戻るボタンが押されたときにダイアログがキャンセル可能である場合、onCancelが発生します。

または、ボタンまたは戻るボタンを押しても、ダイアログが閉じられるたびに呼び出される OnDismissListener を使用します

...
AlertDialog alert = builder.create();
alert.setOnDismissListener(new DialogInterface.OnDismissListener() {
    @Override
    public void onDismiss(DialogInterface dialog) {
        finish();
    }
});
alert.show();

また、通常は、ダイアログの代わりにデータがない場合はトーストを表示することをお勧めします。

        if(args != null && args.equals(noData)){
             Toast.makeText(context, noData, Toast.LENGTH_LONG).show();
             finish();
        }
于 2013-02-21T12:24:54.733 に答える