kri*_*ish 3 android firebase firebase-cloud-messaging
我正在尝试创建一个Android应用,该应用从服务器接收Firebase消息,并通过调用一个函数来更改ImageView的源图像。
我的firebase服务:
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
String body = remoteMessage.getNotification().getBody();
MainActivity.changeUi(body);
}
Run Code Online (Sandbox Code Playgroud)
我的主要活动:
public class MainActivity extends AppCompatActivity {
static ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Loading Home Layout
setContentView(R.layout.activity_home);
iv=findViewById(R.id.imgView);
}
public static void changeUi(String s){
if(s=="change")
iv.setImageResource(R.drawable.image2);
}
}
Run Code Online (Sandbox Code Playgroud)
应用在发送Firebase消息时崩溃。这是我的第一个应用程序,我听不懂其他答案。谢谢您的帮助。
调用静态方法将创建该活动的新实例。在这里由于imageView未初始化而崩溃。
您可以在此处使用BroadCast Receiver。下面是一个例子。
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
String body = remoteMessage.getNotification().getBody();
Intent myIntent = new Intent("FBR-IMAGE");
myIntent.putExtra("action",body);
this.sendBroadcast(myIntent);
}
Run Code Online (Sandbox Code Playgroud)
在活动中,您需要创建并注册接收者
public BroadcastReceiver myReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getStringExtra("action");
changeUi(action);
}
};
@Override
protected void onResume() {
super.onResume();
registerReceiver(myReceiver, new IntentFilter("FBR-IMAGE"));
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(myReceiver);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
667 次 |
| 最近记录: |