2016-07-02 4 views
0

アンドロイドアプリケーションを実行しようとするたびに、このエラーが発生してクラッシュします。現在のGPSの場所を取得し、データアクティビティのログと呼ばれるテキストビューを更新することになっています。Android GPS OnLocationChangeクラッシュ

07-02 09:28:40.978 27682-27682 /? W/dalvikvm:threadid = 1:未知の例外(グループ= 0x416aeba8)でスレッドが終了する 07-02 09:28:40.978 27682-27682 /? E/AndroidRuntime:致命的な例外:メイン プロセス:com.novakinc.novak、PID:27682 java.lang.NullPointerExceptionが com.novakinc.novak.MainActivity $ 1.onLocationChanged(MainActivity.java:52) でandroid.locationで.LocationManager $ ListenerTransport._handleMessage(LocationManager.java:279)android.location.LocationManager $ ListenerTransport.access $ 000(LocationManager.java:208) android.location.LocationManager $ ListenerTransport $ 1.handleMessage(LocationManager.java:224) ) android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) android.app.Acti vityThread.main(ActivityThread.java:5017) at java.lang.reflect.Method.invokeNative(ネイティブメソッド) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal dalvik.system.NativeStart.mainでcom.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) で.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:785) (ネイティブメソッド)

のAndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.novakinc.novak"> 

<uses-permission android:name="android.permission.ACCESS_COARSE_INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".help" /> 
    <activity android:name=".about" /> 
    <activity android:name=".data"></activity> 
</application> 

</manifest> 

MainAc tivity.java:

package com.novakinc.novak; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.Manifest; 
import android.content.Intent; 
import android.content.pm.PackageManager; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Build; 
import android.os.Bundle; 
import android.provider.Settings; 
import android.support.annotation.NonNull; 
import android.support.annotation.Nullable; 
import android.support.v4.app.ActivityCompat; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity { 


private LocationManager locationManager; 
private LocationListener listener; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 




    locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 


    listener = new LocationListener() { 
     @Override 
     public void onLocationChanged(Location location) { 
      data.log.append("\n " + location.getLongitude() + " " +  location.getLatitude()); 
     } 

     @Override 
     public void onStatusChanged(String s, int i, Bundle bundle) { 

     } 

     @Override 
     public void onProviderEnabled(String s) { 

     } 

     @Override 
     public void onProviderDisabled(String s) { 

      Intent i = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
      startActivity(i); 
     } 
    }; 

    if (ActivityCompat.checkSelfPermission(this,  Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      requestPermissions(new String[] {Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.INTERNET} 
        ,10); 
     } 
     return; 
    } 
    // this code won't execute IF permissions are not allowed, because in the line above there is return statement. 


    locationManager.requestLocationUpdates("gps", 5000, 0, listener); 


} 


//---------------------------------------Menu--------------------------------------------------- 

public boolean onCreateOptionsMenu(Menu menu) { 

    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 
    return true; 
} 

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.about: 
      startActivity(new Intent(this, about.class)); 
      return true; 
     case R.id.help: 
      startActivity(new Intent(this, help.class)); 
      return true; 
     case R.id.data: 
      startActivity(new Intent(this, data.class)); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

//---------------------------------------End Menu----------------------------------------------- 

} 

data.java:LocationListenerにあなたがnullである場所から値を取得しているので、

package com.novakinc.novak; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.TextView; 


public class data extends AppCompatActivity { 

    public static TextView log; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_data); 
     log = (TextView) findViewById(R.id.textView); 

    } 
} 

答えて

0

あなたは、nullポインタ例外を取得しています。常にヌルをチェックしてください。

+0

例を作成できますか? – user3151557

0

data.logはデータアクティビティの静的変数ですか?何かを追加する前にリファレンスを割り当てる必要があります

+0

はい、それはどうですか? – user3151557

+0

データ活動のコードを投稿できますか? –

+0

だから、初めてテキストビューが初期化されないので、NPEを取得しています。しかし、なぜ可視ではないアクティビティでテキストビューに追加したいのですか? –