Note that there are some explanatory texts on larger screens.

plurals
  1. POinvalid statement in fillwindow() in Android
    primarykey
    data
    text
    <p>I newbie in Android and before ask question here i was googling, but on this question i can't find answer. (also this stackoverflow.com/questions/4195089 don't have answer).</p> <p>In my test app on emulator i have error <strong>ERROR/Cursor(1512): Invalid statement in fillWindow()</strong> on LogCat when i press back button on second activity.<br /> <sub><i>11-23 19:06:05.050: DEBUG/TestDB/Debug/MainActivity(1512): onCreate<br /> 11-23 19:06:06.820: DEBUG/TestDB/Debug/MainActivity(1512): openDataBase<br /> 11-23 19:06:07.240: DEBUG/TestDB/Debug/MainActivity(1512): String[] from<br /> 11-23 19:06:07.270: DEBUG/TestDB/Debug/MainActivity(1512): SimpleCursorAdapter<br /> 11-23 19:06:07.500: DEBUG/TestDB/Debug/MainActivity(1512): myDbHelper.close<br /> 11-23 19:06:07.520: DEBUG/TestDB/Debug/MainActivity(1512): onStart<br /> 11-23 19:06:07.551: DEBUG/TestDB/Debug/MainActivity(1512): onResume<br /> 11-23 19:06:09.040: INFO/ActivityManager(587): Displayed activity ru.olegi/.MainActivity: 7962 ms<br /> 11-23 19:06:11.850: INFO/ActivityManager(587): Starting activity: Intent { comp={ru.olegi/ru.olegi.AnotherActivity} }<br /> 11-23 19:06:12.100: DEBUG/TestDB/Debug/AnotherActivity(1512): onCreate<br /> 11-23 19:06:12.970: INFO/ActivityManager(587): Displayed activity ru.olegi/.AnotherActivity: 1100 ms<br /> 11-23 19:06:14.550: ERROR/Cursor(1512): Invalid statement in fillWindow()<br /> 11-23 19:06:14.590: DEBUG/TestDB/Debug/MainActivity(1512): onStart<br /> 11-23 19:06:14.600: DEBUG/TestDB/Debug/MainActivity(1512): onResume<br /> </i></sub><br/></p> <p>All code stored in onCreate. So when i press back, ListView is empty. For fix this i move code to onStart. Here is log for this and again have Invalid statement in fillWindow()<br /> <sub><i> 11-23 19:26:06.280: DEBUG/TestDB/Debug/MainActivity(6597): onCreate<br /> 11-23 19:26:06.462: DEBUG/TestDB/Debug/MainActivity(6597): onStart<br /> 11-23 19:26:06.700: DEBUG/TestDB/Debug/MainActivity(6597): openDataBase<br /> 11-23 19:26:06.740: DEBUG/TestDB/Debug/MainActivity(6597): String[] from<br /> 11-23 19:26:06.750: DEBUG/TestDB/Debug/MainActivity(6597): SimpleCursorAdapter<br /> 11-23 19:26:06.981: DEBUG/TestDB/Debug/MainActivity(6597): myDbHelper.close<br /> 11-23 19:26:07.010: DEBUG/TestDB/Debug/MainActivity(6597): onResume<br /> 11-23 19:26:08.030: INFO/ActivityManager(587): Displayed activity ru.olegi/.MainActivity: 3876 ms<br /> 11-23 19:26:15.419: INFO/ActivityManager(587): Starting activity: Intent { comp={ru.olegi/ru.olegi.AnotherActivity} }<br /> 11-23 19:26:15.770: DEBUG/TestDB/Debug/AnotherActivity(6597): onCreate<br /> 11-23 19:26:16.440: INFO/ActivityManager(587): Displayed activity ru.olegi/.AnotherActivity: 1001 ms<br /> 11-23 19:26:17.860: ERROR/Cursor(6597): Invalid statement in fillWindow()<br /> 11-23 19:26:17.870: DEBUG/TestDB/Debug/MainActivity(6597): onStart<br /> 11-23 19:26:18.260: DEBUG/TestDB/Debug/MainActivity(6597): openDataBase<br /> 11-23 19:26:18.290: DEBUG/TestDB/Debug/MainActivity(6597): String[] from<br /> 11-23 19:26:18.310: DEBUG/TestDB/Debug/MainActivity(6597): SimpleCursorAdapter<br /> 11-23 19:26:18.670: DEBUG/TestDB/Debug/MainActivity(6597): myDbHelper.close<br /> 11-23 19:26:18.700: DEBUG/TestDB/Debug/MainActivity(6597): onResume</i></sub><br /></p> <p>This code </p> <pre><code>package ru.olegi; import java.io.IOException; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.database.SQLException; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.SimpleCursorAdapter; public class MainActivity extends Activity { /** Called when the activity is first created. */ private DatabaseHelper myDbHelper; private ListView lv1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("TestDB/Debug/MainActivity", "onCreate"); setContentView(R.layout.main); } @Override public void onStart() { super.onStart(); Log.d("TestDB/Debug/MainActivity", "onStart"); // DATABASE OPEN - START DatabaseHelper myDbHelper = new DatabaseHelper(this); myDbHelper = new DatabaseHelper(this); try { myDbHelper.createDataBase(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { myDbHelper.openDataBase(); }catch(SQLException sqle){ throw sqle; } Log.d("TestDB/Debug/MainActivity", "openDataBase"); // DATABASE OPEN - END Cursor c = myDbHelper.fetchAllFoodname(); startManagingCursor(c); lv1 = (ListView) findViewById(R.id.ListView01); String[] from = new String[] { DatabaseHelper.KEY_NAME }; int[] to = new int[] { android.R.id.text1}; Log.d("TestDB/Debug/MainActivity", "String[] from"); SimpleCursorAdapter notes = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, c, from, to); Log.d("TestDB/Debug/MainActivity", "SimpleCursorAdapter"); lv1.setAdapter(notes); lv1.setOnItemClickListener(new OnItemClickListener() { //@Override public void onItemClick(AdapterView&lt;?&gt; a, View v, int position, long id) { Intent intent = new Intent(); //getApplicationContext() intent.setClass(MainActivity.this, AnotherActivity.class); //intent.putExtra(AnotherActivity.EXT_ID, id); startActivity(intent); //finish(); } }); // DATABASE CLOSE - START myDbHelper.close(); Log.d("TestDB/Debug/MainActivity", "myDbHelper.close"); // DATABASE CLOSE - END } @Override public void onResume(){ super.onResume(); Log.d("TestDB/Debug/MainActivity", "onResume"); } @Override public void onDestroy(){ super.onDestroy(); Log.d("TestDB/Debug/MainActivity", "onDestroy"); } } </code></pre> <p>Here groups.google.com/group/android-developers/browse_thread/thread/8bec793c626fb405 i read, for fix fillwindow() error need</p> <blockquote> <p>Short answer; Your database object (db) is in the wrong scope. Longer answer; By declaring db in the method you're saying to the JVM that when the method finishes your database connection (db) is no longer useful. What you should do is declare db at the class level instead of the method level, create it in onCreate, and close it in onDestroy.</p> </blockquote> <p>Ok, i move sections // DATABASE OPEN - START and // DATABASE CLOSE - START to onCreate and to onDestory. And now i have exception on start<br /> <sub><i> 11-23 19:35:39.310: DEBUG/TestDB/Debug/MainActivity(8975): onCreate<br /> 11-23 19:35:40.050: DEBUG/TestDB/Debug/MainActivity(8975): openDataBase<br /> 11-23 19:35:40.050: DEBUG/TestDB/Debug/MainActivity(8975): onStart<br /> 11-23 19:35:40.090: DEBUG/AndroidRuntime(8975): Shutting down VM<br /> 11-23 19:35:40.100: WARN/dalvikvm(8975): threadid=3: thread exiting with uncaught exception (group=0x4000fe70)<br /> 11-23 19:35:40.120: ERROR/AndroidRuntime(8975): Uncaught handler: thread main exiting due to uncaught exception<br /> 11-23 19:35:40.300: ERROR/AndroidRuntime(8975): java.lang.RuntimeException: Unable to start activity ComponentInfo{ru.olegi/ru.olegi.MainActivity}: java.lang.NullPointerException<br /> 11-23 19:35:40.300: ERROR/AndroidRuntime(8975): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2268)<br /> 11-23 19:35:40.300: ERROR/AndroidRuntime(8975): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2284)<br /> 11-23 19:35:40.300: ERROR/AndroidRuntime(8975): at android.app.ActivityThread.access$1800(ActivityThread.java:112)<br /> 11-23 19:35:40.300: ERROR/AndroidRuntime(8975): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1692)<br /> 11-23 19:35:40.300: ERROR/AndroidRuntime(8975): at android.os.Handler.dispatchMessage(Handler.java:99)<br /> 11-23 19:35:40.300: ERROR/AndroidRuntime(8975): at android.os.Looper.loop(Looper.java:123)<br /> 11-23 19:35:40.300: ERROR/AndroidRuntime(8975): at android.app.ActivityThread.main(ActivityThread.java:3948)<br /> 11-23 19:35:40.300: ERROR/AndroidRuntime(8975): at java.lang.reflect.Method.invokeNative(Native Method)<br /> 11-23 19:35:40.300: ERROR/AndroidRuntime(8975): at java.lang.reflect.Method.invoke(Method.java:521)<br /> 11-23 19:35:40.300: ERROR/AndroidRuntime(8975): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)<br /> 11-23 19:35:40.300: ERROR/AndroidRuntime(8975): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)<br /> 11-23 19:35:40.300: ERROR/AndroidRuntime(8975): at dalvik.system.NativeStart.main(Native Method)<br /> 11-23 19:35:40.300: ERROR/AndroidRuntime(8975): Caused by: java.lang.NullPointerException<br /> 11-23 19:35:40.300: ERROR/AndroidRuntime(8975): at ru.olegi.MainActivity.onStart(MainActivity.java:59)<br /> 11-23 19:35:40.300: ERROR/AndroidRuntime(8975): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1205)<br /> 11-23 19:35:40.300: ERROR/AndroidRuntime(8975): at android.app.Activity.performStart(Activity.java:3490)<br /> 11-23 19:35:40.300: ERROR/AndroidRuntime(8975): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2240)<br /> 11-23 19:35:40.300: ERROR/AndroidRuntime(8975): ... 11 more<br /> </i></sub><br /></p> <p>Here is code with moved db-sections:</p> <pre><code>package ru.olegi; import java.io.IOException; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.database.SQLException; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.SimpleCursorAdapter; public class MainActivity extends Activity { /** Called when the activity is first created. */ private DatabaseHelper myDbHelper; private ListView lv1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("TestDB/Debug/MainActivity", "onCreate"); setContentView(R.layout.main); // DATABASE OPEN - START DatabaseHelper myDbHelper = new DatabaseHelper(this); myDbHelper = new DatabaseHelper(this); try { myDbHelper.createDataBase(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { myDbHelper.openDataBase(); }catch(SQLException sqle){ throw sqle; } Log.d("TestDB/Debug/MainActivity", "openDataBase"); // DATABASE OPEN - END } @Override public void onStart() { super.onStart(); Log.d("TestDB/Debug/MainActivity", "onStart"); Cursor c = myDbHelper.fetchAllFoodname(); startManagingCursor(c); lv1 = (ListView) findViewById(R.id.ListView01); String[] from = new String[] { DatabaseHelper.KEY_NAME }; int[] to = new int[] { android.R.id.text1}; Log.d("TestDB/Debug/MainActivity", "String[] from"); SimpleCursorAdapter notes = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, c, from, to); Log.d("TestDB/Debug/MainActivity", "SimpleCursorAdapter"); lv1.setAdapter(notes); lv1.setOnItemClickListener(new OnItemClickListener() { //@Override public void onItemClick(AdapterView&lt;?&gt; a, View v, int position, long id) { Intent intent = new Intent(); //getApplicationContext() intent.setClass(MainActivity.this, AnotherActivity.class); //intent.putExtra(AnotherActivity.EXT_ID, id); startActivity(intent); //finish(); } }); } @Override public void onResume(){ super.onResume(); Log.d("TestDB/Debug/MainActivity", "onResume"); } @Override public void onDestroy(){ super.onDestroy(); Log.d("TestDB/Debug/MainActivity", "onDestroy"); // DATABASE CLOSE - START myDbHelper.close(); Log.d("TestDB/Debug/MainActivity", "myDbHelper.close"); // DATABASE CLOSE - END } } </code></pre> <p>Please, help fix <strong>Invalid statement in fillWindow()</strong></p> <p>AnotherActivity - is simple with TextView, MainActivity have only listview + onclick listener</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload