【问题标题】:Updating Textview in an Activity with Local Service使用本地服务更新 Activity 中的 Textview
【发布时间】:2013-02-25 04:02:23
【问题描述】:

我有一个带有 R.id.eventDistance 和 R.id.eventTime 的 Activity 来显示基于当前位置的距离和旅行时间。我使用我的位置服务类每 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);
   }
} 

我不知道在那之后该怎么做。任何帮助表示赞赏。

【问题讨论】:

    标签: android service textview


    【解决方案1】:

    请看这个流程。

    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);
    

    【讨论】:

    • 您好,谢谢您的回答。我将您的代码 TextView.setText(intent.getExtras().getString("&lt;KEY&gt;")) 更改为适用于我的代码的代码。比如:distanceTextView.setText(intent.getExtras().getString("distance")).。但它不起作用。文本视图不会改变。我不确定我做错了什么。与您的代码唯一不同的是我使用 bundle 而不是 putExtra。 Bundle extras = i.getExtras(); extras.putString("distance", distance); extras.putString("duration", duration); 这有什么影响吗?
    • 我在 BroadcastReceiver 的 onReceive() 中放了一个 Log.d 并且该行永远不会被打印出来......
    • Illegal modifier for parameter uiUpdated; only final is permitted我删除了私人修饰符
    【解决方案2】:

    您应该将您的 Activity 绑定到您的服务,以便它们可以直接通信和消息传递。

    参考

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      相关资源
      最近更新 更多