OpenHelper не является Activity, поэтому вы не можете запустить его, как если бы это было Activity. Поскольку это не Activity или унаследовано от Activity, у него нет метода getIntent .
Вам нужно другое действие, скажем, StoreData тогда
- начать эту деятельность,
- получить дополнительные намерения в методе onCreaate этого занятия
= создать экземпляр объекта OpenHelper снова или через метод onCreate
- вы можете получить доступ к таблицам в базе данных через
- например, сохранить данные, введенные в этой деятельности
- вам также нужно было бы отменить попытку получить дополнительные функции Intent.
Пример
Ниже приведен простой пример передачи строки (значение mydata ) из действия List в действие StoreData .
Операция StoreData , которая позволяет пользователю ввести некоторые данные в текст редактирования и затем нажать кнопку СОХРАНИТЬ ДАННЫЕ.
При нажатии кнопки SAVE DATA будет сохранен текст, который был передан с помощью намерения ( mydata ), с данными, введенными пользователем (если щелкнуть мышью, когда ничего не было введено, строка будет не будет добавлено и тост будет указывать это). Если строка успешно добавлена, тост подтверждает это.
Это еще одна кнопка LOG DATA (если есть) , если по ней щелкнуть, и есть какие-либо строки, которые были сохранены, данные будут записаны в Журнал с использованием DataBaseUtils dumpCursor метод.
например. : 0-
2019-01-19 16:56:26.166 7477-7477/mjt.test001 I/System.out: >>>>> Dumping cursor android.database.sqlite.SQLiteCursor@8f5d8ba
2019-01-19 16:56:26.167 7477-7477/mjt.test001 I/System.out: 0 {
2019-01-19 16:56:26.167 7477-7477/mjt.test001 I/System.out: codigo=mydataTEST
2019-01-19 16:56:26.167 7477-7477/mjt.test001 I/System.out: }
2019-01-19 16:56:26.167 7477-7477/mjt.test001 I/System.out: <<<<<
- Это указывает на то, что столбец codigo для единственной строки в таблице содержит значение mydataTEST (т. Е. Mydata была передана через Intent, TEST был введен пользователем).
Код выглядит следующим образом
List.java (Список активности): -
public class List extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent i = new Intent(this,StoreData.class);
i.putExtra("nomelista","mydata");
// NOTE starts the 2nd activity straight away
startActivity(i);
}
}
OpenHelper.java (см. Комментарии): -
public class OpenHelper extends SQLiteOpenHelper {
private static final String NOME_BANCO = "codigoslista.db";
private static final int VERSAO_BANCO = 1;
public static String nomelistafinal = "the_table_name"; //<<<<<<<<<< CHANGED
public OpenHelper(Context ctx) {
super(ctx, NOME_BANCO, null, VERSAO_BANCO);
}
@Override
public void onCreate(SQLiteDatabase db) {
//pega nome da lista
//Bundle bundle = getIntent().getExtras(); //<<<<<<<<< COMMENTD OUT
//nomelistafinal = bundle.getString("nomelista"); //<<<<<<<<< COMMENTED OUT
//db.execSQL("CREATE TABLE CODIGOS(codigo text not null) ");
db.execSQL("CREATE TABLE " + nomelistafinal + "(codigo text not null) ");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//db.execSQL("DROP TABLE CODIGOS");
db.execSQL("DROP TABLE " + nomelistafinal);
onCreate(db);
}
/**
* Store some data
* @param codigo
* @return the rowid of the inserted row
*/
public long storeData(String codigo) {
ContentValues cv = new ContentValues();
cv.put("codigo",codigo);
SQLiteDatabase db = this.getWritableDatabase();
return db.insert(nomelistafinal,null,cv);
}
/**
* Dump all data from the nomlistafinal table
*/
public void logData() {
SQLiteDatabase db = this.getWritableDatabase();
Cursor csr = db.query(nomelistafinal,null,null,null,null,null,null);
DatabaseUtils.dumpCursor(csr);
csr.close();
}
}
StoreData (2-е задание)
public class StoreData extends AppCompatActivity {
EditText mMyData;
Button mSave, mLogData;
OpenHelper mOpnHlpr;
String mCurrentNomlist;
long mLastIDAdded;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_store_data);
mMyData = this.findViewById(R.id.mydata);
mSave = this.findViewById(R.id.save);
mOpnHlpr = new OpenHelper(this);
mCurrentNomlist = getIntent().getStringExtra("nomelista");
setupUI();
}
private void setupUI() {
mMyData = this.findViewById(R.id.mydata);
mSave = this.findViewById(R.id.save);
// Add the OnClick Listener
mSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Do nothing if there is no data
if (mMyData.getText().toString().length() < 1) {
Toast.makeText(StoreData.this, "Not Added as there is nothing to add.", Toast.LENGTH_SHORT).show();
return;
}
// Otherwise addd a row
if ((mLastIDAdded = mOpnHlpr.storeData(mCurrentNomlist + mMyData.getText().toString())) > 0) {
Toast.makeText(StoreData.this,"Added row with an ID of " + String.valueOf(mLastIDAdded),Toast.LENGTH_SHORT).show();
}
}
});
mLogData = this.findViewById(R.id.logdata);
mLogData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (DatabaseUtils.queryNumEntries(mOpnHlpr.getWritableDatabase(),OpenHelper.nomelistafinal) > 0) {
mOpnHlpr.logData();
}
}
});
}
}