2017-04-25 12 views
0

ユーザが編集テキストフィールドに入力した値をグローバル変数に格納しています。私は次に、この値をビデオ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); 
    } 

} 

}

+0

データベースコードを表示してください... – Opiatefuchs

+0

私の質問はデータベースコードで更新されました。私はそれがデータベースの問題であるとは思えません。私が言いましたように、単に結果のアクティビティの文字列を宣言してaddvideorowメソッドに渡すと、ビデオ文字列と宣言された文字列がデータベースに入ります。 –

答えて

0

はSQLiteOpenHelper.OnCreate方法は、1時間に起動しますので、あなたのAndroidアプリを削除して再インストールしてみてください。

+0

私はデータベースをクリアしたかったので、すでにそれが動作していないことを試しました。 –

+0

addVideoRowメソッド 新しいMediaContentDB(..)なしでそれを呼び出す方法は静的メソッドではありません –

0

問題が見つかりました。私はデータベース参照を初期化していないため、addVideoRowメソッドは機能しません。

uriDB = new MediaContentDB(getApplicationContext()); 
関連する問題