在android中创建Alert Box的方法有问题

时间:2012-10-16 13:43:45

标签: android dialog android-alertdialog

我想创建一个警告框,其中包含一个文本框和两个按钮。我为此创建了一个由EditText组成的布局,并创建了一个扩展DialogFragment类的类。我创建了onCreateDialog(),并希望将EditText的输入发送到数据库。我也有databasehandler类。我现在想创建一个类的对象,并在需要出现Dialog时使用show()

如果我在扩展onCreateDialog()的类中创建Activity而不是像之前的方法那样创建对象,这种方法是正确的还是会更好?

代码段是:

public class AskDialog扩展了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类中创建一个对象并使用它的show(getFragment(),null)函数来使用这个类。

1 个答案:

答案 0 :(得分:0)

为了制作自定义警报框,您可以使用android提供的“Layout Inflater”类。要了解有关布局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);