java - Eclipse Android Project forces close immediately after startup? -


i coding accelerometer app android through eclipse. new programming java (this fourth app). when running app opens textview1 doesn't display before app crashes , device returns home screen. thoughts?! researched else's problems different mine (problems included: abstract class,
in xml, , others).

attached mainactivity.java, activity_main.xml, , manifest.

mainactivity.java

package com.example.accelerometer;  import android.app.activity; import android.content.context; import android.graphics.bitmap; import android.graphics.bitmapfactory; import android.hardware.sensor; import android.hardware.sensorevent; import android.hardware.sensoreventlistener; import android.hardware.sensormanager; import android.os.bundle; import android.view.menu; import android.view.view; import android.widget.imageview; import android.widget.textview;    public class mainactivity extends activity implements sensoreventlistener{      float [] history = new float[3];     private int mindex = 0;     private int[] mimgs = new int[3];      public bitmap mbitmap;     public textview mtextview;     public imageview mimage;      private sensormanager sensensormanager;     private sensor senaccelerometer;     private long lastupdate = 0;     private float last_x, last_y, last_z;     private static final int shake_threshold = 600;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);         mimgs[0] = r.drawable.left;         mimgs[1] = r.drawable.right;         mimgs[2] = r.drawable.up;         mimgs[3] = r.drawable.down;         mimage = (imageview) findviewbyid(r.id.imageview1); //      mtextview = (textview) findviewbyid(r.id.textview1);         mbitmap = bitmapfactory.decoderesource(getresources(), mimgs[mindex]);         mimage.setimageresource(mimgs[mindex]);  // easiest way show image          sensensormanager = (sensormanager) getsystemservice(context.sensor_service);         senaccelerometer = sensensormanager.getdefaultsensor(sensor.type_accelerometer);         sensensormanager.registerlistener(this, senaccelerometer , sensormanager.sensor_delay_normal);     }      @override     public void onsensorchanged(sensorevent event) {         sensor mysensor = event.sensor;         long curtime = system.currenttimemillis();          if ((curtime - lastupdate) > 100) {             long difftime = (curtime - lastupdate);             lastupdate = curtime;          if (mysensor.gettype() == sensor.type_accelerometer) {             float xchange = history[0] - event.values[0];             float ychange = history[1] - event.values[1];             float zchange = history[2] - event.values[2];              history[0] = event.values[0];             history[1] = event.values[1];             history[2] = event.values[2];              if ((math.abs(xchange) > 2) || (math.abs(ychange) > 2) || (math.abs(zchange) > 2))             {                 if ((xchange > ychange) && (xchange > zchange))                  {                      if (xchange > 2){                         //left         //              mindex++;         //              if (mindex == 3) { mindex = 0; }  // overflow                         mbitmap = bitmapfactory.decoderesource(getresources(), mimgs[0]);                         mimage.setimagebitmap(mbitmap);                         mimage.setvisibility(view.visible);                     }                     else if (xchange < -2){                         //right                         mbitmap = bitmapfactory.decoderesource(getresources(), mimgs[1]);                         mimage.setimagebitmap(mbitmap);                         mimage.setvisibility(view.visible);                     }                 }                 if ((ychange > xchange) && (ychange > zchange))                      if (ychange > 2)                     {                         //down                         mbitmap = bitmapfactory.decoderesource(getresources(), mimgs[2]);                         mimage.setimagebitmap(mbitmap);                         mimage.setvisibility(view.visible);                     }                     else if (ychange < -2){                         //up                         mbitmap = bitmapfactory.decoderesource(getresources(), mimgs[3]);                         mimage.setimagebitmap(mbitmap);                         mimage.setvisibility(view.visible);                     }             }             if ((zchange > xchange) && (zchange > ychange))             {             if (zchange > 2){                 //out                 mbitmap = bitmapfactory.decoderesource(getresources(), mimgs[0]);                 mimage.setimagebitmap(mbitmap);                 mimage.setvisibility(view.visible);             }             else if (zchange < -2){                 //in                 mbitmap = bitmapfactory.decoderesource(getresources(), mimgs[0]);                 mimage.setimagebitmap(mbitmap);                 mimage.setvisibility(view.visible);             }             }         }  //           //               //              float speed = math.abs(x + y + z - last_x - last_y - last_z)/ difftime * 10000; //               //              if (speed > shake_threshold) { //    //              } //    //              last_x = x; //              last_y = y; //              last_z = z;              }         }      @override     public void onaccuracychanged(sensor sensor, int accuracy) {      }      protected void onpause() {         super.onpause();         sensensormanager.unregisterlistener(this);     }     protected void onresume() {         super.onresume();         sensensormanager.registerlistener(this, senaccelerometer, sensormanager.sensor_delay_normal);     }      @override     public boolean oncreateoptionsmenu(menu menu) {         // inflate menu; adds items action bar if present.         getmenuinflater().inflate(r.menu.main, menu);         return true;     } } 

activity_main.xml

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:paddingbottom="@dimen/activity_vertical_margin"     android:paddingleft="@dimen/activity_horizontal_margin"     android:paddingright="@dimen/activity_horizontal_margin"     android:paddingtop="@dimen/activity_vertical_margin"     tools:context=".mainactivity" >      <textview         android:id="@+id/textview1"         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:gravity="center"         android:text="@string/hello_world" />      <imageview         android:id="@+id/imageview1"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_below="@+id/textview1"         android:layout_centerhorizontal="true"         android:layout_margintop="90dp"         android:src="@drawable/up"         android:visibility="invisible" />  </relativelayout> 

manifest:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="com.example.accelerometer"     android:versioncode="1"     android:versionname="1.0" >      <uses-sdk         android:minsdkversion="8"         android:targetsdkversion="18" />      <application         android:allowbackup="true"         android:icon="@drawable/ic_launcher"         android:label="@string/app_name"         android:theme="@style/apptheme" >         <activity             android:name="com.example.accelerometer.mainactivity"             android:screenorientation="portrait"             android:label="@string/app_name" >             <intent-filter>                 <action android:name="android.intent.action.main" />                  <category android:name="android.intent.category.launcher" />             </intent-filter>         </activity>     </application>  </manifest> 

looking @ code, i'm sure you're getting arrayindexoutofboundsexception(there may few more problems though).

private int[] mimgs = new int[3]; // mimgs array of 3 elements 

when declare array this, maximum possible index 2 , mimgs[2] accessible (i.e) array.length - 1.

but in oncreate() method, have snippet this

    mimgs[0] = r.drawable.left; // first element     mimgs[1] = r.drawable.right; // second     mimgs[2] = r.drawable.up; // third , final possible element of array     mimgs[3] = r.drawable.down; // throws arrayindexoutofboundsexception mimgs[3] not valid index array of size 3 

Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -