Android 使用本地服务更新活动中的Textview
我有一个带有R.id.eventDistance和R.id.eventTime的活动,用于根据当前位置显示距离和行程时间。我使用位置服务类每30秒计算一次这些值 我的问题是:如何在活动中更新TextView?我尝试查找这个问题,并找到了一些可能的解决方案,例如使用BroadcastReceive并在onReceive()方法中调用TextView.setText()。我不知道这是怎么做到的。我应该这样通过活动课吗:Android 使用本地服务更新活动中的Textview,android,service,textview,Android,Service,Textview,我有一个带有R.id.eventDistance和R.id.eventTime的活动,用于根据当前位置显示距离和行程时间。我使用位置服务类每30秒计算一次这些值 我的问题是:如何在活动中更新TextView?我尝试查找这个问题,并找到了一些可能的解决方案,例如使用BroadcastReceive并在onReceive()方法中调用TextView.setText()。我不知道这是怎么做到的。我应该这样通过活动课吗: public class MyReceiver extends Broadcas
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, HomeActivity.class);
}
}
我不知道那之后该怎么办。非常感谢您的帮助。请查看此流程
1.当您要更新UI时,在LocationService类中。在您的情况下,应该每30秒调用一次
Intent i = new Intent("LOCATION_UPDATED");
i.putExtra("<Key>","text");
sendBroadcast(i);
课堂上
private BroadcastReceiver uiUpdated= new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
TextView.setText(intent.getExtras().getString("<KEY>"))
}
};
您应该将您的活动绑定到您的服务,以便它们可以直接通信和传递消息 裁判
嗨,谢谢你的回答。我将您的代码
TextView.setText(intent.getExtras().getString(“”)更改为与我的代码一起工作的代码。类似于:distanceTextView.setText(intent.getExtras().getString(“distance”)。
。但它不起作用。文本视图不会更改。我不确定我做错了什么。唯一不同于您的代码的是我使用bundle而不是putExtra<代码>Bundle extras=i.getExtras()代码>extras.putString(“距离”,distance)代码>extras.putString(“持续时间”,持续时间)代码>这会影响什么吗?我在BroadcastReceive()的onReceive()中放了一个Log.d,这一行永远不会被打印出来…参数uiUpdated的非法修饰符;只允许使用final
I删除私有修饰符
private BroadcastReceiver uiUpdated= new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
TextView.setText(intent.getExtras().getString("<KEY>"))
}
};
unregisterReceiver(uiUpdated);