我是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的内容?
答案 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()方法,以在运行时更新视图。