6

現在の場所に基づいて距離と移動時間を表示する R.id.eventDistance と R.id.eventTime のアクティビティがあります。Location Service クラスを使用して、これらの値を 30 秒ごとに計算します。

私の質問は、Activity で TextView を更新するにはどうすればよいですか? 質問を調べてみたところ、BroadcastReceiver を使用して onReceive() メソッドで TextView.setText() を呼び出すなど、考えられる解決策がいくつか見つかりました。これがどのように行われるのかわかりません。次のようにActivityクラスを渡すことになっていますか?

public class MyReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    Intent i = new Intent(context, HomeActivity.class);
   }
} 

その後どうすればいいのかわからない。どんな助けでも大歓迎です。

4

2 に答える 2

15

このフローをご覧ください。

1.UIを更新する場合はLocationServiceクラスで。あなたの場合、30秒ごとに呼び出す必要があります。

Intent i = new Intent("LOCATION_UPDATED");
i.putExtra("<Key>","text");

sendBroadcast(i);

2. UI(HomeActivity)クラスで

onCreate()で

registerReceiver(uiUpdated, new IntentFilter("LOCATION_UPDATED"));

クラスで

private BroadcastReceiver uiUpdated= new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {

        TextView.setText(intent.getExtras().getString("<KEY>"))

    }
};

onDestroy()で

unregisterReceiver(uiUpdated);
于 2013-02-25T04:24:43.740 に答える
1

Activity をサービスにバインドして、直接通信してメッセージを渡すことができるようにする必要があります。

参照

http://developer.android.com/guide/components/bound-services.html

于 2013-02-25T04:27:04.643 に答える