2016-05-20 20 views
0

加速度計でステップカウンタを作成してください。 コードはエラーなしでコンパイルされますが、電話(S5)で実行すると失敗します。すべてのヘルプは感謝Androidスタジオコードがコンパイルされますが、実行されません。

05-20 09:35:44.773 11142-11142/com.liamoc.stepcounteraccel1 E/Zygote: MountEmulatedStorage() 
05-20 09:35:44.773 11142-11142/com.liamoc.stepcounteraccel1 E/Zygote: v2 
05-20 09:35:44.773 11142-11142/com.liamoc.stepcounteraccel1 I/libpersona: KNOX_SDCARD checking this for 10199 
05-20 09:35:44.773 11142-11142/com.liamoc.stepcounteraccel1 I/libpersona: KNOX_SDCARD not a persona 
05-20 09:35:44.793 11142-11142/com.liamoc.stepcounteraccel1 I/SELinux: Function: selinux_compare_spd_ram , priority [2] , priority version is VE=SEPF_SM-G900F_5.0-1_0032 
05-20 09:35:44.793 11142-11142/com.liamoc.stepcounteraccel1 E/SELinux: [DEBUG] get_category: variable seinfo: default sensitivity: NULL, cateogry: NULL 
05-20 09:35:44.793 11142-11142/com.liamoc.stepcounteraccel1 I/art: Late-enabling -Xcheck:jni 
05-20 09:35:44.823 11142-11142/com.liamoc.stepcounteraccel1 D/TimaKeyStoreProvider: TimaSignature is unavailable 
05-20 09:35:44.823 11142-11142/com.liamoc.stepcounteraccel1 D/ActivityThread: Added TimaKeyStore provider 
05-20 09:35:44.863 11142-11142/com.liamoc.stepcounteraccel1 D/ResourcesManager: creating new AssetManager and set to /data/app/com.liamoc.stepcounteraccel1-2/base.apk 
05-20 09:35:44.883 11142-11142/com.liamoc.stepcounteraccel1 W/art: Failed to find OatDexFile for DexFile /data/data/com.liamoc.stepcounteraccel1/files/instant-run/dex/slice-slice_6-classes.dex (canonical path /data/data/com.liamoc.stepcounteraccel1/files/instant-run/dex/slice-slice_6-classes.dex) with checksum 0x1ff97ab0 in OatFile /data/data/com.liamoc.stepcounteraccel1/cache/slice-slice_6-classes.dex 
05-20 09:35:45.053 11142-11142/com.liamoc.stepcounteraccel1 D/AndroidRuntime: Shutting down VM 
05-20 09:35:45.053 11142-11142/com.liamoc.stepcounteraccel1 E/AndroidRuntime: FATAL EXCEPTION: main 
                       Process: com.liamoc.stepcounteraccel1, PID: 11142 
                       java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.liamoc.stepcounteraccel1/com.liamoc.stepcounteraccel1.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference 
                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2515) 
                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723) 
                        at android.app.ActivityThread.access$900(ActivityThread.java:172) 
                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422) 
                        at android.os.Handler.dispatchMessage(Handler.java:102) 
                        at android.os.Looper.loop(Looper.java:145) 
                        at android.app.ActivityThread.main(ActivityThread.java:5832) 
                        at java.lang.reflect.Method.invoke(Native Method) 
                        at java.lang.reflect.Method.invoke(Method.java:372) 
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 
                       Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference 
                        at android.app.Activity.findViewById(Activity.java:2168) 
                        at com.liamoc.stepcounteraccel1.MainActivity.<init>(MainActivity.java:29) 
                        at java.lang.reflect.Constructor.newInstance(Native Method) 
                        at java.lang.Class.newInstance(Class.java:1650) 
                        at android.app.Instrumentation.newActivity(Instrumentation.java:1079) 
                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2505) 
                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723)  
                        at android.app.ActivityThread.access$900(ActivityThread.java:172)  
                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422)  
                        at android.os.Handler.dispatchMessage(Handler.java:102)  
                        at android.os.Looper.loop(Looper.java:145)  
                        at android.app.ActivityThread.main(ActivityThread.java:5832)  
                        at java.lang.reflect.Method.invoke(Native Method)  
                        at java.lang.reflect.Method.invoke(Method.java:372)  
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)  
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)  

public class MainActivity extends Activity implements SensorEventListener{ 

     TextView display; 
     float g; 

    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     display = (TextView) findViewById(R.id.testView); // Correction 
     SensorManager mgr = (SensorManager) getSystemService(SENSOR_SERVICE); 
     Sensor GSensor = mgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
     mgr.registerListener(this, GSensor, SensorManager.SENSOR_DELAY_NORMAL); 

     String mytext = Float.toString(g); 

     display.setText(mytext); 


    } 
    @Override 
    public void onSensorChanged(SensorEvent event){ 

     float x = event.values[0]; 
     float y = event.values[1]; 
     float z = event.values[2]; 

     g = (x * x + y * y + z *z)/(SensorManager.GRAVITY_EARTH *SensorManager.GRAVITY_EARTH); 



    } 



    @Override 
    public void onAccuracyChanged(Sensor sensor, int accuracy){ 
    } 
} 

エラーログにMAIN活動に

CODEは..ので、申し訳ありませんのnoobイムiftheのPROBは... おかげ

+0

あなたがのTextViewをロードしているものは何でもwrong.Youは、あなたのビューのXMLのロード後のTextViewを呼び出す必要があります。 TextViewは 'setContentView'の後に呼び出さなければなりません –

+0

' setContentView() 'の後に' findViewById() 'を使用する必要があります。' NullPointerException'をオンにしてもよろしいですか? 'mytext = Float.toString(g);' 'g '初期化されていません。 – SachinGutte

+0

パーフェクト..走らせる。どうもありがとう!それはステップを数えていません。..それを理解して試してみてください。もし私がそれをやってもらえない場合は、再び投稿してください。 – iamliam

答えて

2

初期本当に簡単ですあなたのテキストビューの後にsetContentView()

TextView display; 

    @Override 
     public void onCreate(Bundle savedInstanceState){ 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      display = (TextView) findViewById(R.id.testView); 

      SensorManager mgr = (SensorManager) getSystemService(SENSOR_SERVICE); 
      Sensor GSensor = mgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
      mgr.registerListener(this, GSensor, SensorManager.SENSOR_DELAY_NORMAL); 

     } 

グラムの値はonSensorChanged()にinitializating、そのための方法でそれを設定されている:

@Override 
    public void onSensorChanged(SensorEvent event){ 

     float x = event.values[0]; 
     float y = event.values[1]; 
     float z = event.values[2]; 

     g = (x * x + y * y + z *z)/(SensorManager.GRAVITY_EARTH *SensorManager.GRAVITY_EARTH); 

     String mytext = Float.toString(g); 
     display.setText(mytext); 

    } 
+0

'String mytext = Float.toString(g);'これはまた 'NullPointerExceotion'を投げる – SachinGutte

+0

私の編集した答えを確認してください。 –

+0

はい、正解です – SachinGutte

関連する問題