1

削除機能とキャンセル機能を備えたカスタマイズされたアラート ダイアログがあります。削除ボタンは、現在選択されているリスト項目を削除することです。キャンセルボタンはアラートダイアログを閉じてリストに戻るはずです。削除をクリックすると削除され、キャンセルをクリックするとアラートダイアログが閉じてリストに移動します。ただし、戻るボタンをクリックすると、警告ダイアログが再び表示されます。アラート ダイアログのコード スニペットは次のとおりです。

LayoutInflater inflater = LayoutInflater.from(context);
            View v = inflater.inflate(R.layout.grocerylistdelete, null);

            AlertDialog.Builder abuilder = new AlertDialog.Builder(
                    context);
            abuilder.setView(v);
            TextView tvStatement = (TextView)   v.findViewById(R.id.textViewStatementDelete);
            tvStatement.setTypeface(bold);
            tvStatement.setText("Are you sure you want to delete"+" "+mCursor.getString(mCursor.getColumnIndex(DBAdapter.KEY_ITEM))+"?");


            Button delete = (Button) v.findViewById(R.id.buttonDelete);
            delete.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {

                    Cursor c = db.getAllGroceries();
                    c.moveToPosition(info.position);
                    String id = c.getString(c.getColumnIndex(DBAdapter.ROW_ID));
                    db.open();
                    db.deletegrocery(Long.parseLong(id)); 
                    c.close();

                    Toast toast = Toast.makeText(GroceryList.this, "Item Deleted Successfully", 5000);
                    toast.show();
                    Intent i = new Intent(getApplicationContext(), GroceryList.class);
                    fillData();
                    startActivity(i);

                }
            });
                Button canceldelete = (Button) v.findViewById(R.id.buttonCancelDelete);
                canceldelete.setOnClickListener(new OnClickListener() {

                    public void onClick(View v) {
                        Intent i = new Intent(getApplicationContext(), GroceryList.class);
                        startActivity(i);

                    }
                });

                abuilder.setCancelable(false);
                AlertDialog alert2 = abuilder.create();
                alert2.show();
4

1 に答える 1

1

ああ、今見えた。ボタンをクリックすると、新しいアクティビティが開始されます。実際には、現在のアクティビティと同じように見えます。

つまり、基本的には、新しいアクティビティを開始すると、古いアクティビティがまだそこにあり、alertdialog がまだ開いているということです。

代わりに、新しいアクティビティを開始せずに、現在のリストのデータを更新できます。dismiss()これを行うには、誰かがクリックしたら (新しいアクティビティを開始する代わりに) メソッドを使用して AlertDialog を非表示にします。

新しい活動を開始したい場合はfinish()、現在の活動を開始するのが最善です。

于 2012-09-21T08:32:52.627 に答える