ユーザが編集テキストフィールドに入力した値をグローバル変数に格納しています。私は次に、この値をビデオURIとともにデータベースに2つのデータベースに挿入しようとしています。しかし、私のデータベースに値を入力しているようには見えません。私のコードは次のとおりです。この活動が始まるとAndroid-データベースに文字列が格納されていない
public class SetMediaName extends Activity {
EditText mediaName;
TextView namePrompt;
Button setTheName;
MediaContentDB uriDB;
Uri videoUri;
Uri photoURI;
Button recordVideo;
public static String medName;
public String vidName;
private static final int REQUEST_CODE_VIDEO = 1;
private static final int REQUEST_CODE_PHOTO = 2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.set_media_name);
mediaName = (EditText) findViewById(R.id.editText);
namePrompt = (TextView) findViewById(R.id.textView);
setTheName = (Button) findViewById(R.id.setButtonName);
recordVideo = (Button) findViewById(R.id.recbtn);
setTheName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view)
{
sendMedName = setMediaName();
}
});
recordVideo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent startVideoFunction = new Intent();
startVideoFunction.setAction(MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(startVideoFunction, REQUEST_CODE_VIDEO);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
try {
switch (requestCode) {
case REQUEST_CODE_VIDEO:
videoUri = data.getData();
String videoPath = videoUri.toString();
uriDB.addVideoRow(videoPath, sendMedName);
break;
case REQUEST_CODE_PHOTO:
String photoPath = photoURI.toString();
uriDB.addPhotoRow(photoPath,sendMedName);
break;
}
} catch (NullPointerException e) {
//prevent crash when returning with Null data to mainactivity.
}
}
public String setMediaName(){
medName = mediaName.getText().toString();
return medName;
}
}
、ユーザーは、その後、彼らは彼らのビデオの録画を開始するために録音ボタンを押して、タイトルを入力するよう求めています。再び、私のデータは私のデータベースには入っていません。誰かが私のエラーを見つけられる場合は、文字列medNameが実行時に事前定義された値として宣言されている場合にデータが入力されるので、私はそれを感謝します。
データベース・コード:
public class MediaContentDB {
public static final String KEY_ID = "content_id";
public static final String KEY_PHOTO_ID = "photo_id";
public static final String KEY_MEDIA_PATH = "media_path";
public static final String KEY_MEDIA_NAME ="media_name";
public static final String KEY_PHOTO_NAME ="photo_name";
public static final String KEY_PHOTO_PATH = "photo_path";
private MyDataBaseHelper myDataBaseHelper;
Context context;
public MediaContentDB(Context context){
this.context=context;
myDataBaseHelper = new MyDataBaseHelper(context,MyDataBaseHelper.DATABASE_NAME,null, MyDataBaseHelper.DATABASE_VERSION);
}
public void closeDatabase() {
myDataBaseHelper.close();
}
public void addVideoRow(String videoPath, String mediaName) {
ContentValues newVideo = new ContentValues();
newVideo.put(KEY_MEDIA_PATH, videoPath);
newVideo.put(KEY_MEDIA_NAME, mediaName);
SQLiteDatabase db = myDataBaseHelper.getWritableDatabase();
db.insert(MyDataBaseHelper.DATABASE_TABLE, null, newVideo);
}
public void addPhotoRow(String photoPath, String photoName) {
ContentValues newPhoto = new ContentValues();
newPhoto.put(KEY_PHOTO_PATH, photoPath);
newPhoto.put(KEY_PHOTO_NAME, photoName);
SQLiteDatabase db = myDataBaseHelper.getWritableDatabase();
db.insert(MyDataBaseHelper.DATABASE_PHOTO, null, newPhoto);
}
public String getVideoPath(String mediaName) {
String[] result_columns = new String[]{KEY_MEDIA_PATH};
String where = KEY_MEDIA_NAME + " = ?";
String whereArgs[] = {mediaName};
String groupBy = null;
String having = null;
String order = null;
SQLiteDatabase db = myDataBaseHelper.getWritableDatabase();
Cursor cursor = db.query(MyDataBaseHelper.DATABASE_TABLE,
result_columns, where,
whereArgs, groupBy, having, order);
//
boolean result = cursor.moveToFirst();
if (result) {
return cursor.getString(cursor.getColumnIndex(KEY_MEDIA_PATH));
}
return "";
}
public String[] getMediaTitle() {
ArrayList<String> nameArray = new ArrayList<String>();
String[] result_columns = new String[]{KEY_MEDIA_NAME};
String mediaName;
String where = null;
String whereArgs[] = null;
String groupBy = null;
String having = null;
String order = null;
SQLiteDatabase db = myDataBaseHelper.getWritableDatabase();
Cursor cursor = db.query(MyDataBaseHelper.DATABASE_TABLE,
result_columns, where,
whereArgs, groupBy, having, order);
//
boolean result = cursor.moveToFirst();
while (result) {
mediaName = cursor.getString(cursor.getColumnIndex(KEY_MEDIA_NAME));
nameArray.add(mediaName);
result = cursor.moveToNext();
}
return nameArray.toArray(new String[nameArray.size()]);
}
public String[] getPhotoTitle() {
ArrayList<String> nameArray = new ArrayList<String>();
String[] result_columns = new String[]{KEY_PHOTO_NAME};
String mediaName;
String where = null;
String whereArgs[] = null;
String groupBy = null;
String having = null;
String order = null;
SQLiteDatabase db = myDataBaseHelper.getWritableDatabase();
Cursor cursor = db.query(MyDataBaseHelper.DATABASE_PHOTO,
result_columns, where,
whereArgs, groupBy, having, order);
//
boolean result = cursor.moveToFirst();
while (result) {
mediaName = cursor.getString(cursor.getColumnIndex(KEY_PHOTO_NAME));
nameArray.add(mediaName);
result = cursor.moveToNext();
}
return nameArray.toArray(new String[nameArray.size()]);
}
public String getPhotoPath(String mediaName) {
String[] result_columns = new String[]{KEY_PHOTO_PATH};
String where = KEY_PHOTO_NAME + " = ?";;
String whereArgs[] = {mediaName};
String groupBy = null;
String having = null;
String order = null;
SQLiteDatabase db = myDataBaseHelper.getWritableDatabase();
Cursor cursor = db.query(MyDataBaseHelper.DATABASE_PHOTO,
result_columns, where,
whereArgs, groupBy, having, order);
//
boolean result = cursor.moveToFirst();
if (result) {
return cursor.getString(cursor.getColumnIndex(KEY_PHOTO_PATH));
}
return "";
}
private static class MyDataBaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "mediaContent.db";
private static final String DATABASE_TABLE = "Videos";
private static final String DATABASE_PHOTO = "Photos";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE = "create table " +
DATABASE_TABLE + " (" + KEY_ID +
" integer primary key autoincrement, " + KEY_MEDIA_NAME + " text not null, " +
KEY_MEDIA_PATH + " text not null);";
private static final String DATABASE_PHOTO_CREATE = "create table " +
DATABASE_PHOTO + " (" + KEY_PHOTO_ID +
" integer primary key autoincrement, " + KEY_PHOTO_NAME + " text not null, " +
KEY_PHOTO_PATH + " text not null);";
public MyDataBaseHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
db.execSQL(DATABASE_PHOTO_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion) {
Log.w("TaskDBAdapter", "Upgrading from version " +
oldVersion + " to " +
newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF IT EXISTS " + DATABASE_TABLE);
db.execSQL("DROP TABLE IF IT EXISTS " + DATABASE_PHOTO);
onCreate(db);
}
}
}
データベースコードを表示してください... – Opiatefuchs
私の質問はデータベースコードで更新されました。私はそれがデータベースの問題であるとは思えません。私が言いましたように、単に結果のアクティビティの文字列を宣言してaddvideorowメソッドに渡すと、ビデオ文字列と宣言された文字列がデータベースに入ります。 –