Android (api 15) を使用して Android アプリケーションを作成しましたが、android:minSdkVersion は「8」です。このアプリケーションを実行するために 4.1 エミュレーターを使用しています。エミュレーターで正常に動作し、api 4.1 を搭載したデバイスに正常にインストールされます...しかし、私のdatak
クラス (データベース接続ファイル) を使用するアクティビティが開始されると、アプリケーションは動作を停止します。
このアプリは、4 つの問題から 1 つの答えを出すクイズです。データベース名は「KBC」で、ゲームをプレイすると取得されますが、デバイスではデータベースが取得されません。デバイスは、エミュレーターにプッシュしたすべてのテーブルと質問を含むデータベース ファイル "KBC" の場所を見つけることができないと思います...
仮想デバイス ファイル エクスプローラーでは、データベース kbc が "data/data/android.kt.banoge.karodpati/databases" の場所に表示されます。
datak
私のクラスのコードは以下に含まれています。私はすでに他の多くの質問を見てきましたが、役に立ちません:
- http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/
- エミュレーターでは動作するがデバイスでは動作しない Android アプリケーション
この問題の理由または解決策を教えてください。
public class Datak
{
public static final String QUE = "question";
public static final String A = "optionA";
public static final String B = "optionB";
public static final String C = "optionC";
public static final String D = "optionD";
public static final String ANS = "answer";
public static final String LEV = "level";
private static final String TAG = "DBAdapter";
public static final String played = "played";
public static final String five = "five";
public static final String one = "one";
public static final String second = "second";
public static final String first = "first";
private static final String DATABASE_NAME = "KBC";
private static final String DATABASE_TABLE = "main";
private static final String DATABASE_TABLE2 = "main2";
private static final String DATABASE_TABLE3 = "main3";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE =
"create table "+ DATABASE_TABLE +"("
+ QUE + " text not null,"
+ A + " text not null, "
+ B + " text not null,"
+ C + " text not null,"
+ D + " text not null,"
+ ANS + " text not null,"
+ LEV + " text not null); ";
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;
public Datak(Context ctx)
{
this.context = ctx;
DBHelper = new DatabaseHelper(context);
}
private static class DatabaseHelper extends SQLiteOpenHelper
{
DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion)
{
Log.w(TAG, "Upgrading database from version " + oldVersion
+ " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS titles");
onCreate(db);
}
}
public Datak open() throws SQLException
{
db = DBHelper.getWritableDatabase();
return this;
}
public void close()
{
DBHelper.close();
}
public Cursor getValue()
{
return db.query(DATABASE_TABLE, new String[] {
QUE,
A,
B,
C,
D,
ANS,LEV
},
null,
null,
null,
null,
null,null
);
}
public Cursor getValue2()
{
return db.query(DATABASE_TABLE2, new String[] {
QUE,
A,
B,
C,
D,
ANS,LEV
},
null,
null,
null,
null,
null,null
);
}
public Cursor getValue3()
{
return db.query(DATABASE_TABLE3, new String[] {
QUE,
A,
B,
C,
D,
ANS,LEV
},
null,
null,
null,
null,
null,null
);
}
public Cursor getState()
{
return db.query("states", new String[] {
played,
five,
one,
second,
first
},
null,null,null,null,null);
}
public void updateRow(int a)
{
final Cursor c1;
int pl;
ContentValues CV=new ContentValues();
c1=db.query("states", new String[] {
played,
five,
one,
second,
first
},
null,null,null,null,null);
c1.moveToPosition(0);
if(a==1)
{
pl=c1.getInt(0);
pl++;
CV.put(played, pl);
}
if(a==2)
{
pl=c1.getInt(1);
pl++;
CV.put(five, pl);
}
if(a==3)
{
pl=c1.getInt(2);
pl++;
CV.put(one, pl);
}
if(a==4)
{
pl=c1.getInt(3);
pl++;
CV.put(second, pl);
}
if(a==5)
{
pl=c1.getInt(4);
pl++;
CV.put(first, pl);
}
db.update("states", CV, null, null);
c1.close();
}
12-05 19:08:57.158: E/AndroidRuntime(13825): FATAL EXCEPTION: main 12-05 19:08:57.158: E/AndroidRuntime(13825): java.lang.IllegalStateException: アクティビティ 12 のメソッドを実行できませんでした-05 19:08:57.158: E/AndroidRuntime(13825): android.view.View$1.onClick(View.java:3069) 12-05 19:08:57.158: E/AndroidRuntime(13825): Android で。 view.View.performClick(View.java:3591) 12-05 19:08:57.158: E/AndroidRuntime(13825): android.view.View$PerformClick.run(View.java:14263) 12-05 19: 08:57.158: E/AndroidRuntime(13825): android.os.Handler.handleCallback(Handler.java:605) 12-05 19:08:57.158: E/AndroidRuntime(13825): android.os.Handler.dispatchMessage (Handler.java:92) 12-05 19:08:57.158: E/AndroidRuntime(13825): android.os.Looper.loop(Looper.java:137) 12-05 19:08:57.158: E/AndroidRuntime (13825): android.app.ActivityThread で。main(ActivityThread.java:4507) 12-05 19:08:57.158: E/AndroidRuntime(13825): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) 12-05 19:08:57.158: E/AndroidRuntime (13825): java.lang.reflect.Method.invoke(Method.java:511) 12-05 19:08:57.158: E/AndroidRuntime(13825): com.android.internal.os.ZygoteInit$MethodAndArgsCaller で。実行 (ZygoteInit.java:790) 12-05 19:08:57.158: E/AndroidRuntime(13825): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 12-05 19:08: 57.158: E/AndroidRuntime(13825): dalvik.system.NativeStart.main(Native Method) 12-05 19:08:57.158: E/AndroidRuntime(13825): 原因: java.lang.reflect.InvocationTargetException 12-05 19:08:57.158: E/AndroidRuntime(13825): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) 12-05 19:08:57.158: E/AndroidRuntime(13825): java.lang.reflect で。方法。呼び出し (Method.java:511) 12-05 19:08:57.158: E/AndroidRuntime(13825): android.view.View$1.onClick(View.java:3064) 12-05 19:08:57.158: E /AndroidRuntime(13825): ... 11 more 12-05 19:08:57.158: E/AndroidRuntime(13825): 原因: android.database.sqlite.SQLiteException: そのようなテーブルはありません: 状態: 、コンパイル中: SELECT が再生されました、5、1、2、最初の FROM 状態 12-05 19:08:57.158: E/AndroidRuntime(13825): android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method) 12-05 19:08:57.158: E /AndroidRuntime(13825): android.database.sqlite.SQLiteCompiledSql.(SQLiteCompiledSql.java:68) 12-05 19:08:57.158: E/AndroidRuntime(13825): android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram .java:143) 12-05 19:08:57.158: E/AndroidRuntime(13825): android.database.sqlite.SQLiteProgram で。compileAndbindAllArgs(SQLiteProgram.java:361) 12-05 19:08:57.158: E/AndroidRuntime(13825): android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:127) 12-05 19:08:57.158: E /AndroidRuntime(13825): android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:94) 12-05 19:08:57.158: E/AndroidRuntime(13825): android.database.sqlite.SQLiteQuery.(SQLiteQuery. java:53) 12-05 19:08:57.158: E/AndroidRuntime(13825): android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47) 12-05 19:08:57.158: E/AndroidRuntime( 13825): android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1690) 12-05 19:08:57.158: E/AndroidRuntime(13825): android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java) :1575) 12-05 19:08:57.158: E/AndroidRuntime(13825): android.database で。sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1531) 12-05 19:08:57.158: E/AndroidRuntime(13825): android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1611) 12-05 19: 08:57.158: E/AndroidRuntime(13825): com.kt.banoge.karodpati.Datak.updateRow(Datak.java:172) 12-05 19:08:57.158: E/AndroidRuntime(13825): com.kt .banoge.karodpati.MainActivity.change(MainActivity.java:66) 12-05 19:08:57.158: E/AndroidRuntime(13825): ... 14 以上 }66) 12-05 19:08:57.158: E/AndroidRuntime(13825): ... 14 以上 }66) 12-05 19:08:57.158: E/AndroidRuntime(13825): ... 14 以上 }