0

テキスト ボックスと 2 つのボタンを含むアラート ボックスを作成したいと考えています。で構成されるこのレイアウトをEditText作成し、クラスを拡張するクラスを作成しましたDialogFragment。を作成し、データベースonCreateDialog()から入力を送信したいと考えました。EditTextデータベースハンドラクラスもあります。show()クラスのオブジェクトを作成し、ダイアログを表示する必要があるときはいつでも使用したいと考えています。

このアプローチは正しいですか、それとも以前のアプローチのようにオブジェクトを作成するのではなく、onCreateDialog()拡張するクラスで作成した方がよいでしょうか?Activity

コード スニペットは次のとおりです。

public class AskDialog extends DialogFragment {

private String var = "";
EditText ask;

public void setVar(String var){
    this.var = var;
}
@Override
public Dialog onCreateDialog(Bundle savedInstance){

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    LayoutInflater inflator = getActivity().getLayoutInflater();

    builder.setView(inflator.inflate(R.layout.ask, null));
    builder.setTitle("Not Found").setMessage("XYZ is not found");
    final EditText ask = new EditText(this); //Error
    builder.setPositiveButton("Save", new OnClickListener(){

        @Override
        public void onClick(DialogInterface arg0, int arg1) {
            // TODO Auto-generated method stub
            String ab = ask.getText().toString();
        }

    });
    builder.setNegativeButton("Don't Know", new OnClickListener(){

        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub

        }

    });

    return null;
}

}

Activity クラスで this のオブジェクトを作成し、その show(getFragment(), null) 関数を使用して、このクラスを使用したいと考えています。

4

1 に答える 1

0

カスタム アラート ボックスを作成するには、Android が提供する 'Layout Inflater' クラスを使用できます。レイアウト インフレータの詳細については、このリンクを直接確認できますhttp://developer.android.com/reference/android/view/LayoutInflater.html

このコードは、編集フィールドとボタンを使用してカスタム AlertBox を作成するのに役立つと思います。

LayoutInflater inflater =(LayoutInflater)Yourclass.this.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);
addNotes = (LinearLayout) inflater.inflate(R.layout.ask, null);

final Button positiveButton = (Button) addNotes.findViewById(R.id.btn_positive);

final EditText et_ask=(EditText)addNotes.findViewById(R.id.et_ask);

positiveButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {

String ab = et_ask.getText().toString();

addNotes.setVisibility(View.GONE);

}
});

LayoutParams params = new  LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT);
Yourclass.this.addContentView(addNotes,params);
addNotes.setVisibility(View.VISIBLE);
于 2012-10-16T14:57:51.330 に答える