0

いくつかのパラメーターを AlertDialog に渡そうとしましたが、このダイアログにはほとんどの場合、これら 2 つのパラメーター ("foo" および "bar" パラメーターを想定) が表示され、showDialog(int id). Bundleパラメーターを渡すためにオブジェクトを取る Activity クラスには別のメソッドがあります: showDialog(int id, Bundle args)、しかしこのメソッドは API 8 以降でのみ使用でき、API 7 で作業する必要があります。

ここでは、私がやっていることを簡単にするために、いくつかのコードのチャンクを入れます。

私のアクティビティでは、次のように AlertDialog を作成します。

    protected Dialog onCreateDialog(int id) {
        final LayoutInflater factory = LayoutInflater.from(this);

        switch(id) {
        case DIALOG_ID:
            final View view = factory.inflate(R.layout.dialog_layout, null);
            final TextView fooValue = (TextView)view.findViewById(R.id.foo_label);
            final TextView barValue = (TextView)view.findViewById(R.id.foo_label);
            //fooLabel.setText("HERE MUST BE FOO PARAMETER VALUE");
            //barLabel.setText("HERE MUST BE BAR PARAMETER VALUE");

            return new AlertDialog.Builder(this).
                setIcon(R.drawable.icon).
                setTitle(R.string.app_name).
                setView(view).
                setPositiveButton(R.string.close, null).
                create();
...

他の部分では、このダイアログを次のように呼び出します。

    // THESE PARAMETERS MUST BE PASSED TO DIALOG
    int foo = result.getInt("foo");
    String bar = result.getString("bar");

    showDialog(DIALOG_ID);
...

どうもありがとうございました!

4

2 に答える 2

2

setFooBar(int foo, String bar)上記の関数を実装しているクラスにメソッドを追加して、呼び出される onCreateDialog前に foo と bar の値を受け取ることをお勧めします。showDialog

アクティビティのインスタンスがない場合は、メソッドと変数を静的にすることを検討してください。

于 2011-01-22T01:19:47.513 に答える
-1

この例を試してください

LayoutInflater factory = LayoutInflater.from(this);
            final View textEntryView = factory.inflate(R.layout.alert_dialog_text_entry, null);// this layout can created by yourself whatever you want.
            return new AlertDialog.Builder(AlertDialogSamples.this)
                .setIcon(R.drawable.alert_dialog_icon)
                .setTitle(R.string.alert_dialog_text_entry)
                .setView(textEntryView)
                .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {

                        /* User clicked OK so do some stuff */
                    }
                })
                .setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {

                        /* User clicked cancel so do some stuff */
                    }
                })
                .create();

レイアウト名: main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView android:layout_width="fill_parent" android:textColor="#663355"
        android:layout_height="wrap_content" android:hint="@string/hello" />
</LinearLayout>
于 2011-01-22T11:49:13.867 に答える