2016-02-28 2 views
2

Я хочу послать долготу и широту моего onLocationChanged метода внутри класса GPSTracker к GPSPrincipal (который является моей основной деятельностью) и активировать тост, который показывает широту и долготу.Android onLocationChanged GPSTracker врезается

У меня возникли проблемы с broadcastreciver, чтобы отправить данные из GPSTracker в GPSPrincipal, а также, в Aplication аварий и он показывает следующее сообщение об ошибке:

FATAL EXCEPTION: main java.lang.NullPointerException at android.content.ContextWrapper.sendBroadcast(ContextWrapper.java:344) at co.edu.javeriana.introcm.gpsexample.GPSTracker.onLocationChanged(GPSTracker.java:192)

Линия 192:

sendBroadcast(broadcastIntent); 

Последняя строка на onLocationChanged внутри GPSTracker

GPSPrincipal (Основная деятельность):

public class GPSPrincipal extends Activity { 
    GPSTracker gps; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_gpsprincipal); 
    } 

    public void loca(View arg0) { 
     gps = new GPSTracker(GPSPrincipal.this); 
     if(gps.canGetLocation()){ 
      TextView latitud = (TextView) findViewById(R.id.showLatitud); 
      TextView longitud = (TextView) findViewById(R.id.showLongitud); 
      latitud.setText(String.valueOf(gps.getLatitude())); 
      longitud.setText(String.valueOf(gps.getLongitude()));} 
     else { 
      gps.showSettingsAlert();} 
    } 

    public void cambio() { 
     BroadcastReceiver receiver = new BroadcastReceiver() { 
      public void onReceive(Context context, Intent intent) { 
       Toast.makeText(context, "Located: - \nLat: " + intent.getExtras().get("latitude") + "\nLong: " + intent.getExtras().get("longitude"), Toast.LENGTH_LONG).show();}}; 
     registerReceiver(receiver, new IntentFilter("com.example.broadcast.gps.location_change")); 
    } } 

GPSTracker:

public class GPSTracker extends Service implements LocationListener { 
    private final Context mContext; 
    private Location location; 
    private double latitude; // latitud 
    private double longitude; // longitud 

    protected LocationManager locationManager; 

    public GPSTracker(Context context) { 
     this.mContext = context; //Obtener el contexto 
     getLocation(); 
    } 

    public void onLocationChanged(Location location) { 
     Intent broadcastIntent = new Intent("com.example.broadcast.gps.location_change"); 
     broadcastIntent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 
     broadcastIntent.putExtra("latitude", latitude); 
     broadcastIntent.putExtra("longitude", longitude); 
     sendBroadcast(broadcastIntent); 
    } 

Manifest:

package="co.edu.javeriana.introcm.gpsexample" 
android:versionCode="1" 
android:versionName="1.0"> 
<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="18" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.INTERNET" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme"> 
    <activity 
     android:name=".GPSPrincipal" 
     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> 
+0

Потенциально кажется, что ваш контекст при вызове sendBroadcast() равен null в классе ContextWrapper. Возможно, вам стоит попробовать использовать mContext.sendBroadcast и посмотреть, не изменилось ли это – JoxTraex

+0

Спасибо. Я сделал то, что вы сказал, и это работает. – overflow132

+0

Приятно слышать, я перевел его на ответ. – JoxTraex

ответ

1

Потенциально, кажется, что контекст при вызове sendBroadcast() является нулем в классе ContextWrapper. Возможно, вам стоит попробовать использовать mContext.sendBroadcast и посмотреть, не изменилось ли это.

Смежные вопросы