2017-05-31 5 views
1

私はバックグラウンドスレッドで10秒間隔でGPSの位置を監視し、いくつかの基準でテストするアプリケーションを構築しています。テストが成功すると、ブロードキャストレシーバにメッセージが送信されます。受信側の次のコードはバックグラウンドスレッドから緯度と経度を取得し、トーストで結果を表示するだけでうまく動作します。私は別のアクティビティを開始するための呼び出しで乾杯を交換する場合は、次のようブロードキャストレシーバーから別のアクティビティを呼び出す

package com.barney.gpstracking; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.widget.Toast; 

public class PosReceiver extends BroadcastReceiver { 
    double lat, lon; 
    String slat, slon; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Bundle params = intent.getExtras(); 
     if (params != null) { 
      lat = params.getDouble("lati"); 
      slat = String.valueOf(lat); 
      lon = params.getDouble("long"); 
      slon = String.valueOf(lon); 
     } 
     Toast.makeText(context, "Position is:" + lat + " " + lon, Toast.LENGTH_LONG).show(); 
    } 
} 

しかし、:

  lon = params.getDouble("long"); 
      slon = String.valueOf(lon); 
     } 
     Intent goPop=new Intent(context,PopUpActivity.class); 
     context.startActivity(goPop); 
    } 
} 

をそれはコンパイルし、私のデバイス上で[OK]をインストールしますが、私はすぐに実行時エラーを取得しますそれは放送を受信しようとする。他の場所から呼び出すと、私が呼び出そうとしているPopUpActivityは完全に機能します(たとえば、メインアクティビティから)。したがって、上記のgoPopの意図は間違っていると思います。私は同様の質問に答えてアドバイスを見てきましたが、私は問題を理解することはできません。誰も私を助けることができますか?

+1

また、これは同じものであるかもしれないhttps://stackoverflow.com/questions/9137477/passing-data-from-broadcast-receiver-to-another-activity?rq=1 – Ivan86

+0

logcatを投稿 –

答えて

0

これを試してみてください。

Intent in = new Intent(context, Popup.class); 
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
in.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
context.startActivity(in); 
+0

私のためにも動作します!偉大な、ありがとう - クリス –

+0

あなたは正しい答えを考えるので、あなたはちょうど投票し、右の旗を傾けることができるので、それは他の人が正しい答えを得るのを助ける。 –

関連する問題