无法更新textview

时间:2015-06-21 12:26:55

标签: android xml textview google-cloud-messaging

我是android的新手并且遇到了一个小问题。我在TextView中有一个Relativelayout元素。我的应用程序正在从broadcast接收GCM,并希望根据{{1}动态更新此TextView收到了。我试过使用broadcast方法。但它没有用。

layout.xml文件中的片段

TextViewElementId.setText

我的Activity类的片段(这里我将相应的数据和文本视图ID传递给setBroadcastText方法)

<TextView
    style="@style/LabelFont"
    android:id="@+id/txtView1"
    android:text="-"
    android:textColor="#ffffff"
    android:layout_alignParentRight="true"/>

}

当收到与此文本框相关的数据时,将调用此setBroadcastText方法。

我是否需要在运行时添加更新此textview的内容?

3 个答案:

答案 0 :(得分:0)

您的处理程序为空。因此它崩溃了。

答案 1 :(得分:0)

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.os.Handler.post(java.lang.Runnable)' on a null object reference.

这意味着处理程序为null。 您应该在调用post方法之前初始化处理程序对象,如下所示:

handler=new Handler();

答案 2 :(得分:0)

经过大量研发后,这就是我的想法。 要在收到广播时更新视图,请执行以下操作:

在GCMIntentService类中,

import android.support.v4.content.LocalBroadcastManager
//your code
protected void onMessage(final Context arg0, final Intent arg1) {
//Other parts of your code
Intent broadcast = new Intent("IntentName");
                                broadcast.putExtra("Intent_Key", "Intent_Value");
                                 LocalBroadcastManager.getInstance(context).sendBroadcast(broadcast);
}

现在,在必须更新文本视图的活动类中,接收此广播。这是怎么回事。

import android.support.v4.content.LocalBroadcastManager;
//
protected void onCreate(Bundle savedInstanceState) {
//Other parts of onCreate
  LocalBroadcastManager.getInstance(this).registerReceiver(NewMethodName,
                new IntentFilter("IntentName"));

}

将方法NewMethodName()实现为BroadcastReceiver()方法,以在运行时更新视图。