我想创建一个警告框,其中包含一个文本框和两个按钮。我为此创建了一个由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)函数来使用这个类。
答案 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);