Продължавам да получавам това в моя logcat всеки път, когато стартирам кода си и не мога да разбера как да го поправя. Когато актуализирам, получавам тази грешка, използвам подобен код, когато изтривам и това работи добре. Използвах точки на прекъсване при актуализацията, тя продължи до края на функцията. Мислех, че при startActivityForResult ще отиде на следващата страница, но не става. Същият код за startActivityForResult работи в друга функция
Ето кода за актуализация
public void edit_to_report_page(final View v) {
LayoutInflater inflater = LayoutInflater.from(this);
View addView = inflater.inflate(R.layout.new_vehicle, null);
idNum = (EditText) addView.findViewById(R.id.deleteRecord);
new AlertDialog.Builder(this)
.setTitle("Edit a report")
.setMessage("Enter the Id number of the report to edit")
.setView(addView)
.setPositiveButton("Edit",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
String id = idNum.getText().toString();
uniqueID = Long.parseLong(id);
newID(uniqueID);
info.open();
try {
boolean correctNumber = info
.Exists(uniqueID);
if (!correctNumber) {
Toast.makeText(getApplicationContext(),
"Number not found",
Toast.LENGTH_SHORT).show();
info.close();
}else{
info.close();
intent = new Intent(v.getContext(),
report.class);
startActivityForResult(intent, 0);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
}
}).show();
}
Ето кода за изтриване, който работи
public void delete_db(View v) {
LayoutInflater inflater = LayoutInflater.from(this);
View addView = inflater.inflate(R.layout.new_vehicle, null);
idNum = (EditText) addView.findViewById(R.id.deleteRecord);
final Dialog d = new Dialog(this);
final TextView tv = new TextView(this);
new AlertDialog.Builder(this)
.setTitle("Delete a report")
.setMessage("Enter the Id number of the report to delete")
.setView(addView)
.setPositiveButton("Delete",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
String id = idNum.getText().toString();
long primaryId = Long.parseLong(id);
info.open();
try {
boolean inCorrectNumber = info
.deleteInspection(primaryId);
if (inCorrectNumber) {
Toast.makeText(getApplicationContext(),
"Number not found",
Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
info.close();
dbInfo();
}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
}
}).show();
}
Ето кода в моя dbAdapter за изтриване и съществува (актуализация)
public boolean Exists(long _id)throws Exception
{
Cursor c = db.query(DB_TABLE, new String[] { KEY_ROWID},
"_id=" + _id, null, null, null, null);
boolean exists=(c.getCount()>0);
c.close();
return exists;
}
public boolean deleteInspection(long _id)throws Exception
{
int numResults = 0;
numResults = db.delete(DB_TABLE,"_id=" + _id , null);
return (numResults < 1);
}
Ето какво получавам в logcat
04-10 09:47:05.006: E/CursorWindow(2961): Bad request for field slot 0,-1. numRows = 1, numColumns = 1 04-10 09:47:05.016: D/AndroidRuntime(2961): Shutting down VM 04-10 09:47:05.027: W/dalvikvm(2961): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 04-10 09:47:05.046: E/AndroidRuntime(2961): FATAL EXCEPTION: main 04-10 09:47:05.046: E/AndroidRuntime(2961): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.signalsetapp/com.signalsetapp.inspectionchecklist.report}: java.lang.IllegalStateException: get field slot from row 0 col -1 failed 04-10 09:47:05.046: E/AndroidRuntime(2961): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 04-10 09:47:05.046: E/AndroidRuntime(2961): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 04-10 09:47:05.046: E/AndroidRuntime(2961): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 04-10 09:47:05.046: E/AndroidRuntime(2961): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 04-10 09:47:05.046: E/AndroidRuntime(2961): at android.os.Handler.dispatchMessage(Handler.java:99) 04-10 09:47:05.046: E/AndroidRuntime(2961): at android.os.Looper.loop(Looper.java:123) 04-10 09:47:05.046: E/AndroidRuntime(2961): at android.app.ActivityThread.main(ActivityThread.java:4627) 04-10 09:47:05.046: E/AndroidRuntime(2961): at java.lang.reflect.Method.invokeNative(Native Method) 04-10 09:47:05.046: E/AndroidRuntime(2961): at java.lang.reflect.Method.invoke(Method.java:521) 04-10 09:47:05.046: E/AndroidRuntime(2961): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 04-10 09:47:05.046: E/AndroidRuntime(2961): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 04-10 09:47:05.046: E/AndroidRuntime(2961): at dalvik.system.NativeStart.main(Native Method) 04-10 09:47:05.046: E/AndroidRuntime(2961): Caused by: java.lang.IllegalStateException: get field slot from row 0 col -1 failed 04-10 09:47:05.046: E/AndroidRuntime(2961): at android.database.CursorWindow.getString_native(Native Method) 04-10 09:47:05.046: E/AndroidRuntime(2961): at android.database.CursorWindow.getString(CursorWindow.java:329) 04-10 09:47:05.046: E/AndroidRuntime(2961): at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:49) 04-10 09:47:05.046: E/AndroidRuntime(2961): at com.signalsetapp.inspectionchecklist.report.getInfoFromDB(report.java:129) 04-10 09:47:05.046: E/AndroidRuntime(2961): at com.signalsetapp.inspectionchecklist.report.onCreate(report.java:111) 04-10 09:47:05.046: E/AndroidRuntime(2961): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 04-10 09:47:05.046: E/AndroidRuntime(2961): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 04-10 09:47:05.046: E/AndroidRuntime(2961): ... 11 more