我在writeMessage活动中有一个列表视图。当用户写消息时,它会显示它写的内容,但当消息收到时,它不会显示。我必须一次又一次地开始活动。我试着注册广播到我的活动,但我做不到。
我定义了我的首要活动:
public class CMesWriteMessage extends Activity {
private BroadcastReceiver the_receiver = new IncomingSms(){
@Override
public void onReceive(Context c, Intent i) {
addItems();
}
};
private IntentFilter filter = new IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED);
...
...
}
并像这样注册:
protected void onResume() {
// Register reciever if activity is in front
this.registerReceiver(the_receiver, filter);
super.onResume();
}
protected void onPause() {
// Unregister reciever if activity is not in front
this.unregisterReceiver(the_receiver);
super.onPause();
}
我哪里错了?
我不知道这是否是整个问题,但super.onPause()/super.onResume()应该是它们各自覆盖中的第一个调用:
protected void onResume() {
super.onResume();
this.registerReceiver(the_receiver, filter);
}
protected void onPause() {
super.onPause()
this.unregisterReceiver(the_receiver);
}
好的,我改变了我的操作,现在一切都好了。这是正确的代码:
private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
private IntentFilter filter = new IntentFilter(ACTION);
EDïT:
我在广播课上做我的主要操作。在这个活动中,我只更新listview。所以为了达到这个目的,我编辑我的代码如下:
private BroadcastReceiver the_receiver = new IncomingSms(){
@Override
public void onReceive(Context c, Intent i) {
super.onReceive(c, i);
//My activity special operations.
}
};
注意:IncomingSms是我的主要广播接收器类。