Note that there are some explanatory texts on larger screens.

plurals
  1. POActivity Error on Android
    text
    copied!<p>i've searched it on the web and stackoverflow but i couldnt find the solution for my problem. In my application i record accelerometer data (x,y and z), write these into a database, and then generate some features from accelerometer data acquired from database in another class named generateFeatures that extends mainActivity (the reason i derive it from mainActivity is to use database class and use sqlite commands in it). In my main activity (its name is MainActivity), i use as a member field and initialize generateFeatures class to generating features in it.But when i start the app. it crashes and give that out.</p> <pre><code>12-27 21:03:16.735: E/AndroidRuntime(27236): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.coordinates/com.example.coordinates.MainActivity}: java.lang.NullPointerException 12-27 21:03:16.735: E/AndroidRuntime(27236): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100) 12-27 21:03:16.735: E/AndroidRuntime(27236): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125) 12-27 21:03:16.735: E/AndroidRuntime(27236): at android.app.ActivityThread.access$600(ActivityThread.java:140) 12-27 21:03:16.735: E/AndroidRuntime(27236): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227) 12-27 21:03:16.735: E/AndroidRuntime(27236): at android.os.Handler.dispatchMessage(Handler.java:99) 12-27 21:03:16.735: E/AndroidRuntime(27236): at android.os.Looper.loop(Looper.java:137) 12-27 21:03:16.735: E/AndroidRuntime(27236): at android.app.ActivityThread.main(ActivityThread.java:4898) 12-27 21:03:16.735: E/AndroidRuntime(27236): at java.lang.reflect.Method.invokeNative(Native Method) 12-27 21:03:16.735: E/AndroidRuntime(27236): at java.lang.reflect.Method.invoke(Method.java:511) 12-27 21:03:16.735: E/AndroidRuntime(27236): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006) 12-27 21:03:16.735: E/AndroidRuntime(27236): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 12-27 21:03:16.735: E/AndroidRuntime(27236): at dalvik.system.NativeStart.main(Native Method) 12-27 21:03:16.735: E/AndroidRuntime(27236): Caused by: java.lang.NullPointerException 12-27 21:03:16.735: E/AndroidRuntime(27236): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:228) 12-27 21:03:16.735: E/AndroidRuntime(27236): at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224) 12-27 21:03:16.735: E/AndroidRuntime(27236): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164) 12-27 21:03:16.735: E/AndroidRuntime(27236): at com.example.coordinates.generateFeatures.&lt;init&gt;(generateFeatures.java:25) 12-27 21:03:16.735: E/AndroidRuntime(27236): at com.example.coordinates.MainActivity.onCreate(MainActivity.java:93) 12-27 21:03:16.735: E/AndroidRuntime(27236): at android.app.Activity.performCreate(Activity.java:5184) 12-27 21:03:16.735: E/AndroidRuntime(27236): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1083) 12-27 21:03:16.735: E/AndroidRuntime(27236): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064) 12-27 21:03:16.735: E/AndroidRuntime(27236): ... 11 more </code></pre> <p>this is mainActivity class:</p> <pre><code>public class MainActivity extends FragmentActivity implements SensorEventListener,dialogFragement.NoticeDialogListener { private SensorManager sm; private Sensor myAccelerometer; private VeriTabani veritabani; private SQLiteDatabase db; private FragmentManager fm; private ContentValues myContentValues; private generateFeatures gf; private ArrayList&lt;Float&gt; valuesX; private ArrayList&lt;Float&gt; valuesY; private ArrayList&lt;Float&gt; valuesZ; private ArrayList&lt;Float&gt; zamanDiyagrami; private float totalX,totalY,totalZ,averageX,averageY,averageZ,stdX,stdY,stdZ,aadX,aadY,aadZ,averageResultantAcc,maxX,maxY,maxZ; TextView x; TextView y; TextView z; Button b1,b2,b3; private String dosyaAdi; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myContentValues=new ContentValues(); fm=getFragmentManager(); b1=(Button)findViewById(R.id.button1); b2=(Button)findViewById(R.id.button2); b3=(Button)findViewById(R.id.button3); x=(TextView)findViewById(R.id.textView4); y=(TextView)findViewById(R.id.textView5); z=(TextView)findViewById(R.id.textView6); sm=(SensorManager)getSystemService(Context.SENSOR_SERVICE); myAccelerometer= sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); sm.registerListener(this, myAccelerometer,50000); veritabani= new VeriTabani(this); db=veritabani.getWritableDatabase(); valuesX= new ArrayList&lt;Float&gt;(); valuesY= new ArrayList&lt;Float&gt;(); valuesZ= new ArrayList&lt;Float&gt;(); zamanDiyagrami= new ArrayList&lt;Float&gt;(); gf=new generateFeatures(dosyaAdi); b1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub grafikGoruntule(); } }); b2.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub verileriSil(); } }); b3.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub createDialog(); } }); } public void createDialog(){ sm.unregisterListener(this); DialogFragment dialog = new dialogFragement(); dialog.show(fm, "MyDialogFragment"); sm.registerListener(this, myAccelerometer,50000); } public void verileriSil(){ try{ db.delete("Koordinatlar", null, null); db.delete("Features", null, null); } catch(SQLException ex){ ex.printStackTrace(); Toast toast=Toast.makeText(getBaseContext(),"Silme işlemi sırasında bir hata oluştu"+" "+ex.toString(),Toast.LENGTH_SHORT); toast.show(); } Toast toast= Toast.makeText(getBaseContext(), "Silme işlemi başarılı",Toast.LENGTH_SHORT); toast.show(); } public void grafikGoruntule(){ sm.unregisterListener(this); startActivity(getIntent(this)); } public void onAccuracyChanged(Sensor arg0, int arg1) { // TODO Auto-generated method stub } public void onSensorChanged(SensorEvent event) { // TODO Auto-generated method stub float xGoster,yGoster,zGoster; if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){ xGoster=(event.values[0]); yGoster=(event.values[1]); zGoster=(event.values[2]); x.setText(Float.toString(xGoster)); y.setText(Float.toString(yGoster)); z.setText(Float.toString(zGoster)); kayitEkle(xGoster,yGoster,zGoster,System.currentTimeMillis()); } } public void kayitEkle(float xKoor,float yKoor,float zKoor,long zamanMiliSaniye){ ContentValues degerler= new ContentValues(); degerler.put("xKoor", xKoor); degerler.put("yKoor", yKoor); degerler.put("zKoor", zKoor); degerler.put("zaman", zamanMiliSaniye); try{ db.insertOrThrow("Koordinatlar", null, degerler); } catch(SQLException ex){ ex.printStackTrace(); } } private void dosyayaYaz(){ Cursor dataReader; File myFile; myFile= new File("sdcard/"+dosyaAdi.toString()+".csv"); try { myFile.createNewFile(); FileOutputStream fOut = new FileOutputStream(myFile); OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut); myOutWriter.append("X Koor;Y Koor;Z Koor"); myOutWriter.append("\n"); dataReader=db.rawQuery("SELECT * FROM Koordinatlar", null); while(dataReader.moveToNext()){ Float xDeg=(dataReader.getFloat(dataReader.getColumnIndex("xKoor"))); Float yDeg=(dataReader.getFloat(dataReader.getColumnIndex("yKoor"))); Float zDeg=(dataReader.getFloat(dataReader.getColumnIndex("zKoor"))); myOutWriter.append(String.format("%f",xDeg)+";"+String.format("%f",yDeg)+";"+String.format("%f",zDeg)); myOutWriter.append("\n"); } myOutWriter.close(); fOut.close(); Toast toast=Toast.makeText(getBaseContext(), "Koordinat değerleri başarıyla dosyaya yazıldı, feature değerleri üretiliyor...Lütfen bekleyiniz...",Toast.LENGTH_SHORT); toast.show(); } catch(IOException ex){ Toast toast=Toast.makeText(getBaseContext(), "Dosyaya yazma sırasında bir hata oluştu"+" "+ex.toString(),Toast.LENGTH_LONG); toast.show(); } gf.letsRollOut(); } protected void onPause() { // is called when a different Activity instance is going to be visible // and the current Activity has stopped interacting with the user super.onPause(); sm.unregisterListener(this); } protected void onResume() { //is called when the Activity object and its views become interactive with the user super.onResume(); sm.registerListener(this, myAccelerometer,50000); } protected void onStop() { //is called when an activity is no longer visible to, or interacting with, the user super.onStop(); sm.unregisterListener(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } public Intent getIntent(Context context){ Cursor dataReader; valuesX.clear(); valuesY.clear(); valuesZ.clear(); float zamanIndis=(float) 0.0; String sqlIfadesi="SELECT * FROM Koordinatlar WHERE zaman&gt;=((SELECT MAX(zaman) FROM Koordinatlar)-10000)"; dataReader=db.rawQuery(sqlIfadesi, null); int veriSayisi; veriSayisi=dataReader.getCount(); while(dataReader.moveToNext()){ valuesX.add(dataReader.getFloat(dataReader.getColumnIndex("xKoor"))); valuesY.add(dataReader.getFloat(dataReader.getColumnIndex("yKoor"))); valuesZ.add(dataReader.getFloat(dataReader.getColumnIndex("zKoor"))); zamanIndis=zamanIndis+1; zamanDiyagrami.add(zamanIndis); } TimeSeries series = new TimeSeries("Line1"); for( int i = 0; i &lt; veriSayisi; i++) { series.add(zamanDiyagrami.get(i), valuesX.get(i)); } TimeSeries series2 = new TimeSeries("Line2"); for( int i = 0; i &lt; veriSayisi; i++) { series2.add(zamanDiyagrami.get(i), valuesY.get(i)); } TimeSeries series3 = new TimeSeries("Line3"); for( int i = 0; i &lt; veriSayisi; i++) { series3.add(zamanDiyagrami.get(i), valuesZ.get(i)); } XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); dataset.addSeries(series); dataset.addSeries(series2); dataset.addSeries(series3); series.setTitle("X Coor"); series2.setTitle("Y Coor"); series3.setTitle("Z Coor"); XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); XYSeriesRenderer renderer = new XYSeriesRenderer(); XYSeriesRenderer renderer2 = new XYSeriesRenderer(); XYSeriesRenderer renderer3 = new XYSeriesRenderer(); mRenderer.addSeriesRenderer(renderer); mRenderer.addSeriesRenderer(renderer2); mRenderer.addSeriesRenderer(renderer3); renderer.setColor(Color.GREEN); renderer.setPointStyle(PointStyle.DIAMOND); renderer2.setColor(Color.BLUE); renderer2.setPointStyle(PointStyle.DIAMOND); renderer3.setColor(Color.RED); renderer3.setPointStyle(PointStyle.DIAMOND); return ChartFactory.getLineChartIntent(context, dataset, mRenderer, "Koordinatlar"); } public void onDialogPositiveClick(DialogFragment dialog) { EditText et=(EditText)dialog.getDialog().findViewById(R.id.editText1); dosyaAdi=et.getText().toString(); dosyayaYaz(); } public void onDialogNegativeClick(DialogFragment dialog) { dialog.dismiss(); sm.registerListener(this, myAccelerometer,50000); } } </code></pre> <p>and this is generateFeatures class:</p> <pre><code>public class generateFeatures extends MainActivity{ private ContentValues myContentValues; private float totalX,totalY,totalZ,averageX,averageY,averageZ,stdX,stdY,stdZ,aadX,aadY,aadZ,averageResultantAcc,maxX,maxY,maxZ; private VeriTabani veritabani; private SQLiteDatabase db; private String dosyaAdi; public generateFeatures(String dosyaAdi){ veritabani= new VeriTabani(this); db=veritabani.getWritableDatabase(); this.dosyaAdi=dosyaAdi; } public void letsRollOut(){ boolean bitti=false; Cursor firstTimeHandler=db.rawQuery("SELECT MIN(zaman) FROM Koordinatlar", null); firstTimeHandler.moveToFirst(); long firstTime= firstTimeHandler.getLong(0); long nextTime=firstTime+3000; Cursor lastTimeHandler=db.rawQuery("SELECT MAX(zaman) FROM Koordinatlar", null); lastTimeHandler.moveToFirst(); long lastTime=lastTimeHandler.getLong(0); while(!bitti){ calculateAverage(firstTime,nextTime); calculateStandartDev(firstTime,nextTime); calculateAverageAbsoluteDifferance(firstTime,nextTime); calculateAverageResultant(firstTime,nextTime); calculateMax(firstTime,nextTime); calculateBinnedDist(firstTime,nextTime); firstTime=(long) (nextTime+0.000001); nextTime=(nextTime+3000); if(nextTime&gt;=lastTime){ nextTime=lastTime; calculateAverage(firstTime,nextTime); calculateStandartDev(firstTime,nextTime); calculateAverageAbsoluteDifferance(firstTime,nextTime); calculateAverageResultant(firstTime,nextTime); calculateMax(firstTime,nextTime); calculateBinnedDist(firstTime,nextTime); bitti=true; } myContentValues.put("ortX", averageX); myContentValues.put("ortY", averageY); myContentValues.put("ortZ", averageZ); myContentValues.put("stdX", stdX); myContentValues.put("stdY", stdY); myContentValues.put("stdZ", stdZ); myContentValues.put("aadX", aadX); myContentValues.put("aadY", aadY); myContentValues.put("aadZ", aadZ); myContentValues.put("maxX", maxX); myContentValues.put("maxY", maxY); myContentValues.put("maxZ", maxZ); myContentValues.put("averageResultantAcc", averageResultantAcc); db.insertOrThrow("Features", null, myContentValues); } dosyayaYaz(dosyaAdi); } </code></pre> <p>Database class:</p> <pre><code>public class VeriTabani extends SQLiteOpenHelper { private final static String veriTabaniAdi="dataBase1"; private static final int veriTabaniVersiyon=5; public VeriTabani(Context context) { super(context, veriTabaniAdi, null, veriTabaniVersiyon); // TODO Auto-generated constructor stub } public static void main(String[] args) { // TODO Auto-generated method stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub final String tablo1,tablo2; tablo1="CREATE TABLE Koordinatlar (_id INTEGER primary key AUTOINCREMENT,xKoor REAL,yKoor REAL,zKoor REAL,zaman INTEGER);"; db.execSQL(tablo1); tablo2="CREATE TABLE Features (_id INTEGER primary key AUTOINCREMENT,ortX REAL,ortY REAL,ortZ REAL,stdX REAL,stdY REAL,stdZ REAL,maxX REAL,maxY REAL,maxZ REAL,aadX REAL,aadY REAL,aadZ REAL,averageResultantAcc REAL,binX1 INTEGER,binX2 INTEGER,binX3 INTEGER,binX4 INTEGER,binX5 INTEGER,binX6 INTEGER,binX7 INTEGER,binX8 INTEGER,binX9 INTEGER,binX10 INTEGER,binY1 INTEGER,binY2 INTEGER,binY3 INTEGER,binY4 INTEGER,binY5 INTEGER,binY6 INTEGER,binY7 INTEGER,binY8 INTEGER,binY9 INTEGER,binY10 INTEGER,binZ1 INTEGER,binZ2 INTEGER,binZ3 INTEGER,binZ4 INTEGER,binZ5 INTEGER,binZ6 INTEGER,binZ7 INTEGER,binZ8 INTEGER,binZ9 INTEGER,binZ10 INTEGER);"; db.execSQL(tablo2); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub db.execSQL("DROP TABLE IF EXISTS Koordinatlar"); db.execSQL("DROP TABLE IF EXISTS Features"); onCreate(db); } } </code></pre>
 

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