Java 无法使用DialogFragment将记录添加到sqlite数据库
我正在尝试将记录添加到我的sqlite数据库中。如果单击“添加”,将打开一个对话框片段。然后,当您将一些信息写入textfield并在微调器中选择一个选项时,应该将其添加到sqlite数据库中。如果我从主要活动开始做,这会起作用。但是我只有在我试图从DialogFragment中获得相同的信息时才会得到FC 对话框片段代码:Java 无法使用DialogFragment将记录添加到sqlite数据库,java,android,eclipse,sqlite,android-dialogfragment,Java,Android,Eclipse,Sqlite,Android Dialogfragment,我正在尝试将记录添加到我的sqlite数据库中。如果单击“添加”,将打开一个对话框片段。然后,当您将一些信息写入textfield并在微调器中选择一个选项时,应该将其添加到sqlite数据库中。如果我从主要活动开始做,这会起作用。但是我只有在我试图从DialogFragment中获得相同的信息时才会得到FC 对话框片段代码: public class CustomDialogFragment extends DialogFragment { Spinner spin; Edit
public class CustomDialogFragment extends DialogFragment {
Spinner spin;
EditText etNumber, etForwardNumber;
Boolean initialDisplay = true;
Database mDB = new Database(getActivity());
Cursor c;
public void DialogFragment(){
// Empty constructor required for DialogFragment
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
View view = getActivity().getLayoutInflater().inflate(R.layout.activity_dialog, null);
etNumber = (EditText)view.findViewById(R.id.etNumber);
etForwardNumber = (EditText)view.findViewById(R.id.etForwardNumber);
etNumber.setHint("Phone Number");
etForwardNumber.setHint("Forward Number");
etForwardNumber.setVisibility(View.GONE);
spin = (Spinner)view.findViewById(R.id.spOptions);
List<String> list = new ArrayList<String>();
list.add("Block Call");
list.add("Forward Call");
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_spinner_item, list);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin.setAdapter(dataAdapter);
spin.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
Log.d("DIALOGFRAGMENT", "Option selected: " + position);
if (position == 0) {
Log.d("LOG_TAG", "Block");
etForwardNumber.setVisibility(View.GONE);
//Log.d("LOG_TAG", initialDisplay.toString());
//initialDisplay = false;
}else {
Log.d("LOG_TAG", "Forward");
etForwardNumber.setVisibility(View.VISIBLE);
}
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
// your code here
}
});
builder.setMessage("")
.setTitle("Add a new number")
.setView(view);
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//Hide the dialog
}
});
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//Add records to sqlite database
mDB.open();
String cname = "test";
String caction = "Forward";
//String cnumber = "Numbertoforward";
ContentValues cv = new ContentValues();
cv.put("cName", cname);
cv.put("cAction", caction);
//cv.put("cNumber", cnumber);
mDB.empInsert(cv);
c.requery();
}
});
return builder.create();
}
/*@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//Inflate the XML view for the help dialog fragment
//View view = inflater.inflate(R.layout.activity_dialog, container);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// 2. Chain together various setter methods to set the dialog characteristics
/*builder.setMessage("Test msg")
.setTitle("Title");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User clicked OK button
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});*/
/*return view;
} */
}
非常感谢您的帮助 一开始很难说,但您的数据库似乎没有正确初始化。你该走了
Database mDB = new Database(getActivity());
到您的onCreateDialog方法。将其移动到此处将确保getActivity()返回用于初始化数据库的上下文
或者,我强烈建议使用某种类型的DatabaseHelper类,该类使用单例模式。因此,您可以更灵活地从应用程序中的任何位置访问数据库。仍然可以获取FC,但数据已添加:)
Database mDB = new Database(getActivity());