私はいくつかの連絡先を保存し、アンドロイド携帯電話デバイスで連絡先を取得する簡単なアプリを構築しています。
独自のデータベースとテーブルを作成し、電話でテーブルに値を挿入しました。
私の電話はルート化されていません。そのため、ファイルにアクセスできませんが、値がテーブルに格納されていることがわかります。また、エミュレーターでもテストされています。ここまでは大丈夫です。
テーブルからデータをフェッチして、リスト内のすべての連絡先を表示します。これでもいいです。
しかし、問題は、レコードを削除しようとすると、logcat でテーブル名が null であることが示され (例外ではありません)、データが削除されないことです。しかし、エミュレーターでは、データがテーブルから削除されています。電話でこれを達成することはできません。
これは削除するための私のコードです、
public boolean onContextItemSelected(MenuItem item) {
super.onContextItemSelected(item);
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item
.getMenuInfo();
int menuItemIndex = item.getItemId();
String[] menuItems = getResources().getStringArray(R.array.menu);
String menuItemName = menuItems[menuItemIndex];
String listItemName = Customers[info.position];
if (item.getTitle().toString().equalsIgnoreCase("Delete")) {
Toast.makeText(
context,
"Selected List item is: " + listItemName + "MenuItem is: "
+ menuItemName, Toast.LENGTH_LONG).show();
DB = context.openOrCreateDatabase("CustomerDetails.db",
MODE_PRIVATE, null);
try {
int pos = info.position;
pos = pos + 1;
Log.d("", "customers[pos]: " + Customers[info.position]);
Cursor c = DB
.rawQuery(
"Select customer_id,first_name,last_name from CustomerInfo",
null);
int rowCount = c.getCount();
DB.delete(Table_name,
"customer_id" + "=" + String.valueOf(pos), null);
DB.close();
Log.d("", "" + String.valueOf(pos));
Toast.makeText(context, "Deleted Customer", Toast.LENGTH_LONG)
.show();
// Customers[info.position]=null;
getCustomers();
} catch (Exception e) {
Toast.makeText(context, "Delete unsuccessfull",
Toast.LENGTH_LONG).show();
}
}
これは私のlogcatです。
07-02 10:12:42.976: D/Cursor(1560): Database path: CustomerDetails.db
07-02 10:12:42.976: D/Cursor(1560): Table name : null
07-02 10:12:42.984: D/Cursor(1560): Database path: CustomerDetails.db
07-02 10:12:42.984: D/Cursor(1560): Table name : null
データが削除されない理由がわかりません。テーブルにデータが存在します。
私のコードを修正してください。どんな助けでも大歓迎です!!