0

画像と OK ボタンを含むはずの比較的単純なものを実装しようとしてDialogFragmentおり、アクティビティからの要求に応じて表示したいと考えています。

そのレイアウトをonCreateViewviaに設定しましinflater.inflateたが、OK ボタン イベント ハンドラの実装がカスタム DialogFragment クラスにあることを伝える方法がわかりません。アクティビティでそれを見つけようとしているようですが、これは私が望んでいるものではありません。電話をかけるgetDialog().dismiss()だけでそれを却下できますか?

アクティビティでダイアログを作成する方法は次のとおりです。

ResponseDialog dialog = new ResponseDialog();
dialog.show(getFragmentManager(), "dialog_response_image");

また、カスタム DialogFragment を設定する必要getDialog().setCanceledOnTouchOutside(true);があると言う人もいますが、これをどこに設定すればよいでしょうか。でonActivityCreated

アクティビティに含まれる画像のソースを設定したい場合、アクティビティからそのビューにアクセスするにはどうすればよいですか?

また、何らかの理由で、静的な幅/高さを使用しても、ディスプレイ全体がいっぱいになります。これを修正する方法を知っている人はいますか?-レイアウトXMLのLinearLayout代わりに切り替えることでRelativeLayout、これを修正できました...DialogFragment

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:background="@color/background_color"
    tools:context=".MainActivity"
    android:layout_width="200dp"
    android:layout_height="400dp"
    android:id="@+id/dialogImageReponse" >

    <Button
        android:id="@+id/dialogButtonOk"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:text="@string/ok"
        android:onClick="Ok" />

</RelativeLayout>
4

1 に答える 1

1

私はあなたの質問のそれぞれに答えようとします:

1.) 「OK ボタン イベント ハンドラーの実装がカスタム DialogFragment クラスにあることを伝える方法」について、あなたが私たちに伝えていないので、なぜそれをしたいのかわかりません。

2.) 「getDialog().dismiss() を呼び出すだけで、それを閉じることができますか?」. Activity から DialogFragment を破棄したい場合は、dialog.dismiss() を呼び出すだけです (ここでの「dialog」は ResponseDialog dialog = new ResponseDialog(); を指します。 ResponseDialog オブジェクトを作成しました。

3.) 「getDialog().setCanceledOnTouchOutside(true);」について もう一度電話するだけです

dialog.setCanceledOnTouchOutside(true); 

この直後:

ResponseDialog dialog = new ResponseDialog();
dialog.show(getFragmentManager(), "dialog_response_image");

4.) 以下を呼び出して、そのビューにアクセスできます。

View v = dialog.getView();

使用する画像のソースをそれに含まれるように設定したいだけで、携帯電話に保存されている写真や画像を使用したい場合は、このように ResponseDialog のパラメーター化されたコンストラクターを使用する必要があります。ダイアログフラグメントに表示したい画像のURIまたはファイルパスを渡す必要があるパラメータ:

ResponseDialog dialog = new Response(String filepath);

次に、ResponseDialog であると私が理解しているカスタム ダイアログ クラスでは、このファイルパス (コンストラクターで受信) を使用してビットマップを作成し、その DialogFragment の ImageView のソースとしてビットマップを設定する必要があります。

于 2012-08-18T21:18:17.940 に答える