2012年8月23日木曜日

[AndroidSDK]文字列からdrawableなどのリソースを取得する

R.drawable.myImageなど毎回ハードコーディングしない方法

ImageView imageView = (ImageView) row.findViewById(R.id.imageView);

String imageName = "imageSampleName.jpg";
//ファイル名と拡張子を分割
String[] stArrayData = imageName.split("\\.");
//リソースの取得
int id = getResources().getIdentifier(stArrayData[0], "drawable", getPackageName());
if (id != 0) {
    //画像をセットする
    imageView.setImageResource(id);
}

2012年8月21日火曜日

[AndroidSDK]at dalvik.system.NativeStart.main(Native Method)

Cursor cursor = null;
String query = "SELECT  text1, text2, text3, FROM entity WHERE number_02 = 1 ORDER BY number_01 ASC";
cursor = db.rawQuery(query, null);
SQLiteのqueryを発行後に以下のエラーが発生した

08-21 10:32:42.262: W/dalvikvm(15823): threadid=1: thread exiting with uncaught exception (group=0x40015590)
08-21 10:32:42.272: I/dalvikvm(15823): DALVIK THREADS:
08-21 10:32:42.272: I/dalvikvm(15823): (mutexes: tll=0 tsl=0 tscl=0 ghl=0 hwl=0 hwll=0)
08-21 10:32:42.272: I/dalvikvm(15823): "main" prio=5 tid=1 RUNNABLE
08-21 10:32:42.272: I/dalvikvm(15823):   | group="main" sCount=0 dsCount=0 obj=0x4001f278 self=0xcf88
08-21 10:32:42.272: I/dalvikvm(15823):   | sysTid=15823 nice=0 sched=0/0 cgrp=default handle=-1345006432
08-21 10:32:42.272: I/dalvikvm(15823):   at dalvik.system.NativeStart.main(Native Method)
08-21 10:32:42.272: I/dalvikvm(15823): "Binder Thread #2" prio=5 tid=8 NATIVE
08-21 10:32:42.272: I/dalvikvm(15823):   | group="main" sCount=0 dsCount=0 obj=0x40517358 self=0x206658
08-21 10:32:42.272: I/dalvikvm(15823):   | sysTid=15830 nice=0 sched=0/0 cgrp=default handle=2127016
08-21 10:32:42.272: I/dalvikvm(15823):   at dalvik.system.NativeStart.run(Native Method)
08-21 10:32:42.272: I/dalvikvm(15823): "Binder Thread #1" prio=5 tid=7 NATIVE
08-21 10:32:42.272: I/dalvikvm(15823):   | group="main" sCount=0 dsCount=0 obj=0x40511ba0 self=0x207108
08-21 10:32:42.272: I/dalvikvm(15823):   | sysTid=15829 nice=0 sched=0/0 cgrp=default handle=1196992
08-21 10:32:42.272: I/dalvikvm(15823):   at dalvik.system.NativeStart.run(Native Method)
08-21 10:32:42.272: I/dalvikvm(15823): "Compiler" daemon prio=5 tid=6 VMWAIT
08-21 10:32:42.272: I/dalvikvm(15823):   | group="system" sCount=0 dsCount=0 obj=0x4050dc80 self=0x1241a0
08-21 10:32:42.272: I/dalvikvm(15823):   | sysTid=15828 nice=0 sched=0/0 cgrp=default handle=1196384
08-21 10:32:42.272: I/dalvikvm(15823):   at dalvik.system.NativeStart.run(Native Method)
08-21 10:32:42.272: I/dalvikvm(15823): "JDWP" daemon prio=5 tid=5 VMWAIT
08-21 10:32:42.272: I/dalvikvm(15823):   | group="system" sCount=0 dsCount=0 obj=0x4050dbd0 self=0x1246a8
08-21 10:32:42.272: I/dalvikvm(15823):   | sysTid=15827 nice=0 sched=0/0 cgrp=default handle=571032
08-21 10:32:42.272: I/dalvikvm(15823):   at dalvik.system.NativeStart.run(Native Method)
08-21 10:32:42.272: I/dalvikvm(15823): "Signal Catcher" daemon prio=5 tid=4 VMWAIT
08-21 10:32:42.272: I/dalvikvm(15823):   | group="system" sCount=0 dsCount=0 obj=0x4050db10 self=0x1244b8
08-21 10:32:42.272: I/dalvikvm(15823):   | sysTid=15826 nice=0 sched=0/0 cgrp=default handle=1512472
08-21 10:32:42.272: I/dalvikvm(15823):   at dalvik.system.NativeStart.run(Native Method)
08-21 10:32:42.272: I/dalvikvm(15823): "GC" daemon prio=5 tid=3 VMWAIT
08-21 10:32:42.272: I/dalvikvm(15823):   | group="system" sCount=0 dsCount=0 obj=0x4050da68 self=0x205920
08-21 10:32:42.272: I/dalvikvm(15823):   | sysTid=15825 nice=0 sched=0/0 cgrp=default handle=1512408
08-21 10:32:42.272: I/dalvikvm(15823):   at dalvik.system.NativeStart.run(Native Method)
08-21 10:32:42.272: I/dalvikvm(15823): "HeapWorker" daemon prio=5 tid=2 VMWAIT
08-21 10:32:42.272: I/dalvikvm(15823):   | group="system" sCount=0 dsCount=0 obj=0x4050d9b0 self=0x8b4d8
08-21 10:32:42.272: I/dalvikvm(15823):   | sysTid=15824 nice=0 sched=0/0 cgrp=default handle=1512344
08-21 10:32:42.272: I/dalvikvm(15823):   at dalvik.system.NativeStart.run(Native Method)

理由は String query = "SELECT text1, text2, text3(","が不必要) FROM entity WHERE number_02 = 1 ORDER BY number_01 ASC";
なんつうエラーを出すんだよ

2012年8月17日金曜日

[AndroidSDK]android.database.sqlite.SQLiteDiskIOException: disk I/O error


SQLiteOpenHelper.getReadableDatabaseで以下のエラーが発生した。


Caused by: android.database.sqlite.SQLiteDiskIOException: disk I/O error

at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1849)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)
at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:197)
at com.myapp.util.PackageDBHelper.createDataBase(PackageDBHelper.java:51)


解決方法
DBのの保存先を変更する

data/data/YOUR_PACKAGE/databases/”;

Environment.getDataDirectory() + “/data/YOUR_PACKAGE/databases/”;

参考URL

2012年8月15日水曜日

[AndroidSDK]"Conversion to Dalvik format failed with error 1" の解決策


原因不明、いろいろ試してみた

・プロジェクトのクリーン
Eclipseの-clean
プロジェクトのAndroidツール⇒「プロジェクト・プロパティを修正」
Build Pathの順序変更、エクスポートのチェック見直し

・Androidのバージョン変更
プロジェクトのプロパティからアンドロイドのバージョンを変更、クリーン、ビルド、元のバージョンに戻す

・binとgen削除
各プロジェクトリのbinとgenディレクトリ内のファイルをすべて削除
むしろbin genごと削除

・.classpathを削除

・proguardの更新

・インポートのやり直し
なぜかこれで直った