【问题标题】:update Textview of a layout from a service从服务更新布局的 Textview
【发布时间】:2013-04-22 23:31:26
【问题描述】:

我想更新布局中的 Textview,当服务检测到未接来电时, 我在我的服务的 onCreat 方法中使用此代码:

    public void onCreate() {
    super.onCreate();

    final LayoutInflater mcInflator = (LayoutInflater) ctext.getSystemService(Context.LAYOUT_INFLATER_SERVICE );

    bla bla bla bla bla
    ...

if (call.toString().contains("Missed")){

                    View mcLayout= mcInflator.inflate(R.layout.m_call, null );
                    TextView mc = (TextView) mcLayout.findViewById(R.id.mcText);
                    mc.setText("Missed Call");
                }

                if (call.toString().contains("Outgoing")){

  bla bla bla bla bla ....

但是当我检查布局时,Textview 没有改变?请问有什么建议吗?

【问题讨论】:

  • “有什么建议吗?” - 是的...不要尝试这样做。首先,您不能保证Activity 确实存在。其次,您不能从Service 膨胀或访问Activity 中的视图。第三,你为什么要这样做?如果我错过了一个电话,我会收到一条通知,告诉我我错过了电话 - 这是通知某人有未接电话的正确方式 - 而不是在 TextView 中的 Activity 可能会或可能不会运行。

标签: android service textview inflate


【解决方案1】:

哦,我的...好吧,我们开始:

  • 您不想在服务中执行任何 UI 操作。这是非常糟糕的做法。
  • 您正在创建和修改视图的一个新实例,而不是屏幕上显示的那个。
  • 您可能想要做的是在您的活动中绑定正在运行的服务。有关示例,请参阅 here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    相关资源
    最近更新 更多