0

BroadcastReceiverによって開始されたように見えるAlertDialogがあります。そのため、AlertDialogは、実際にその下にあるアクティビティがわからなくても、私のアクティビティのいずれかの上に表示される場合があります。

private void showAlert(Context context, String s) {
final AlertDialog alertDialog = new AlertDialog.Builder(context)
    .create();
alertDialog.setTitle(context.getString(R.string.SMS_Alert_title));
alertDialog.setMessage(s);
alertDialog.setButton(context.getString(R.string.alert_OK),
    new AlertDialog.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
        return; //can't call the underlying activity's ui update method bec I don't know which activity is actually underlying
        }
    });
alertDialog.setIcon(R.drawable.icon);
alertDialog.show();
}

AlertDialogの[OK]ボタンを押して閉じると、基になるアクティビティのすべてのボタンの押された状態が押されなくなります。ボタンが押された状態で異なるpngを表示するという理由だけで、ボタンを押したままにする必要があります。これは、ボタンが押されたときに「オン」のままであることを示すためにも使用します。(この場合、トグルボタンは使用できません)

理想的には、基になるアクティビティのUIを更新する必要がありますがonResume、AlertDialogが閉じられたときに呼び出されません。

また、ALertDialog OKボタンを押したときにUI更新メソッドを呼び出すことはできません。これは、AlertDialogの下に実際にあるアクティビティがわからないためです(ALertDialogはアクティビティの上に表示される場合があるため)。

(問題を十分に説明できればと思います)

btn.setPressed(true)ps単に避けたいと言う代わりに、押されていないボタンの背景を押されたpngに変更することはできますが。

どうもありがとう

4

2 に答える 2

1

AlertDialogが閉じられた後、どのアクティビティが表示されているかを「知る」必要があります。アクティビティ内のAlertDialogにonDismissListenerを設定し、それに応じて応答することができます。ボタンが押されていない後も押された状態のままにしておきたい理由は私にはわかりませんが、それが本当に必要な場合は、基本的に必要なので、状態を押された状態に設定します。ユーザーが強制的に押された状態です。二度とそれを押していません。

于 2012-06-21T02:00:46.653 に答える
1

あなたが何を達成しようとしているのかよくわかりません。しかし、次のことを試してみてください。

「PressableActivity」という名前のインターフェイスがありますか?これには1つの方法があります。'pressAllButtons'

説明された機能が必要なすべてのアクティビティにこれを実装し、呼び出されたときにすべてのボタンを押すメソッドを実装します。

コンテキストに「PressableActivity」タイプの変数を設定します(または、静的クラスと静的変数でもかまいません)。

onResumeが呼び出されたときに表示されるアクティビティに、この変数を割り当てます。

ダイアログを作成するときに、onDismissListenerを設定します。これにより、コンテキストの静的変数が指すオブジェクトで「pressAllButtons」メソッドが呼び出されます。

お役に立てれば。

于 2012-06-21T05:03:19.323 に答える