英文:
Data Adding Issue to SqLite DB through Dialogue in Android Studio
问题
以下是您提供的Java代码的翻译部分:
public class MyDialogue extends AppCompatDialogFragment {
private EditText edtkeytitle;
//MyDbCode db = new MyDbCode(getActivity()); // 但我在这里初始化时遇到问题
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.dialogue_layout, null);
builder.setView(view)
.setTitle("Create Title")
.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setPositiveButton("ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String key_title = edtkeytitle.getText().toString();
//db.insertDataStore(key_title, ""); // 在这里我想要插入
}
});
edtkeytitle = view.findViewById(R.id.edtkeytitle);
return builder.create();
}
}
如果您有其他问题或需要更多翻译,请告诉我。
英文:
public class MyDialogue extends AppCompatDialogFragment {
private EditText edtkeytitle;
//MyDbCode db = new MyDbCode(getActivity()); //BUT I AM GETTING ISSUE HERE IN INITIALISATION
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.dialogue_layout, null);
builder.setView(view)
.setTitle("Create Title")
.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setPositiveButton("ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String key_title = edtkeytitle.getText().toString();
//db.insertDataStore(key_title, ""); // HERE I WANT TO INSERT
}
});
edtkeytitle = view.findViewById(R.id.edtkeytitle);
return builder.create();
}
}
In My app I want to do Is after clicking on floating button to get a dialogue box open and take value afterwards on positive click and it get stored in database. But I am not able to iniitlaise my database here
MyDbCode db = new MyDbCode(getActivity());
here instead of getActivity whether if I am using 'this' clause again I am getting issue.
Let me show you my MyDbCode.
public class MyDbCode extends SQLiteOpenHelper {
private static final String Database_Name = "Alone.db";
private static final int Database_ID = 1;
private static final String TABLE_NAME = "alonetable";
private static final String TABLE_Data_NAME = "alonedata";
private static final String userpass = "Pass";
private static final String key_title = "key_title";
private static final String key_data = "key_data";
public MyDbCode(Context context) {
super(context, Database_Name, null , Database_ID);
}
@Override
public void onCreate(SQLiteDatabase db) {
String query1 = "CREATE TABLE " + TABLE_NAME + " (" + userpass + " TEXT)";
String query2 = "CREATE TABLE " + TABLE_Data_NAME + " ("
+ key_title + " TEXT,"
+ key_data + " TEXT)";
db.execSQL(query1);
db.execSQL(query2);
//insertData("pass");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
}
public void insertData (String pass){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(userpass, pass);
db.insert(TABLE_NAME, null, values);
db.close();
}
public boolean isexist(){
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor =db.rawQuery("Select * from alonetable", null);
if(cursor.getCount() > 0) return true;
else return false;
}
public boolean Ismatched(String pass){
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor =db.rawQuery("Select pass from alonetable WHERE pass = ?", new String[]{pass});
if(cursor.getCount() > 0) return true;
else return false;
}
public void update(String oldpass, String newpass){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(userpass,newpass);
db.update(TABLE_NAME, cv, "pass = ?", new String[]{oldpass});
db.close();
}
public void insertDataStore (String key_titleent , String key_dataent){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(key_title, key_titleent);
values.put(key_data,key_dataent);
db.insert(TABLE_Data_NAME, null, values);
db.close();
}
Cursor readAllData () {
String query = "SELECT * FROM "+ TABLE_Data_NAME;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor= null;
if(db != null){
cursor = db.rawQuery(query,null);
}
return cursor;
}
public void updateData(String Key_titleupd, String key_Dataupd){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(key_data,key_Dataupd);
db.update(TABLE_NAME, cv, "pass = ?", new String[]{Key_titleupd});
db.close();
}
}
I tried using custom dialogue instead of ALertDialogue but i want if dialogue opens then background of that dialogue gets faded or gets non focusable but i am not able to do so. so i prefered this ALertDialogue but here i am getting Db intialisation issue.
答案1
得分: 1
使用getContext()而不是getActivity()或this... 对我有所帮助。
英文:
Using getContext() instead of getActivity() or this .... helped me.
答案2
得分: 1
使用**getApplicationContext()**在这里会很有帮助。
英文:
it would be helpful too to use
getApplicationContext()
here.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论