3

私は答えを探しましたが、見つかりませんでしたので、助けてください:)

カスタムクラスがあります:

public class CustomClass {

    private final Context ctx;
    public CustomClass(Context ctx) {
        this.ctx = ctx;
    }

    public boolean setDialog(int head, int text) {
        final boolean value;

        final Dialog d = new Dialog(ctx);
        d.requestWindowFeature(Window.FEATURE_NO_TITLE);
        d.setContentView(R.layout.custom2_dialog);

        TextView txtHead = (TextView) d.findViewById(R.id.custom2_txtHead);
        txtHead.setText(ctx.getResources().getString(head));
        TextView txtText = (TextView) d.findViewById(R.id.custom2_txtText);
        txtText.setText(ctx.getResources().getString(text));

        Button btnOK = (Button) d.findViewById(R.id.custom2_btnOK);
        btnOK.setText("OK");
        btnOK.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                value = true;
                d.dismiss();
            }
        });

        Button btnNO = (Button) d.findViewById(R.id.custom2_btnNO);
        btnNO.setText("NO");
        btnNO.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                value = false;
                d.dismiss();
            }
        });

        d.show();

        return value;
    }
}

すべてのアクティビティでダイアログを作成したくないので、カスタムクラスでカスタムダイアログを作成していることがわかります。アクティビティで使用する場合:

CustomClass cC = new CustomClass(this);
if(cC.setDialog(R.string.head, R.string.text)) {
    // user checked OK
} else {
   // user checked NO
}

ユーザーが[OK]または[NO]をチェックしたかどうかを確認する方法。戻り値true、false値はカスタムクラスでは機能しないため、ダイアログはユーザーがクリックするまで待機せず、自動的に値を返します。

4

3 に答える 3

-1

まず、@ user370305 からのコメントは、それを正しく行う方法です。それについて疑いの余地のない他の方法があるかもしれません。

あなたが直面している問題は、カスタムクラスのメソッドを呼び出すときです

   if(cC.setDialog(R.string.head, R.string.text));

何もクリックされていないにもかかわらず、値を取得しています

 return value;

宣言時に設定されるデフォルト値である false として

final boolean value;

代わりに、[キャンセル] と [OK] のクリックをリッスンする必要があります。

于 2012-09-04T13:18:24.490 に答える