如何从 Service.class 更改浮动操作按钮中的 src?
How to change src in Floating Action Button from Service.class?
我有方法,通过按下通知中的按钮来完成操作。
private void handleIncomingActions(Intent playbackAction) {
if (playbackAction == null || playbackAction.getAction() == null) {
return;
}
String actionString = playbackAction.getAction();
if (actionString.equalsIgnoreCase(ACTION_PLAY)) {
if (mediaPlayer != null) {
playMedia();
}
}
if (actionString.equalsIgnoreCase(ACTION_PAUSE)) {
if (mediaPlayer != null) {
pauseMedia();
//HERE NEED TO CHANGE SRC
}
}
if (actionString.equalsIgnoreCase(ACTION_CLOSE)) {
if (mediaPlayer != null) {
stopService(new Intent(this, MediaService.class));
getApplicationContext().unbindService(PlayerActivity.serviceConnection);
PlayerActivity.serviceBound = false;
//HERE NEED TO CHANGE SRC
}
}
}
在两种情况下,我需要将我的 PlayerActivity class 中的 FAB 图标从 Service.class 更改。
如何在不使用 "static" 且不使用单例的情况下访问 FAB?
试一试:
将此添加到 PlayerActivity
:
public void changeFloatingActionButtonIcon(int fabIcon) {
fab.setImageResource(fabIcon);
};
将此添加到 Services.class:
((PlayerActivity) getActivity()).changeFloatingActionButtonIcon(R.drawable.icon);
在役:
public static final String SERVICE_REQUEST = "com.example.app.service.SERVICE_REQUEST";
// ...
Intent data = new Intent(SERVICE_REQUEST);
LocalBroadcastManager.getInstance(ServiceClass.this).sendBroadcast(data);
在Activity中:
// in onCreate for example
reseiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// update your fab here
}
}
// ...
@Override
public void onStop() {
LocalBroadcastManager.getInstance(this).unregisterReceiver(reseiver);
super.onStop();
}
@Override
public void onStart() {
super.onStart();
LocalBroadcastManager.getInstance(this).registerReceiver(reseiver, new IntentFilter(ServiceClass.SERVICE_REQUEST));
}
我有方法,通过按下通知中的按钮来完成操作。
private void handleIncomingActions(Intent playbackAction) {
if (playbackAction == null || playbackAction.getAction() == null) {
return;
}
String actionString = playbackAction.getAction();
if (actionString.equalsIgnoreCase(ACTION_PLAY)) {
if (mediaPlayer != null) {
playMedia();
}
}
if (actionString.equalsIgnoreCase(ACTION_PAUSE)) {
if (mediaPlayer != null) {
pauseMedia();
//HERE NEED TO CHANGE SRC
}
}
if (actionString.equalsIgnoreCase(ACTION_CLOSE)) {
if (mediaPlayer != null) {
stopService(new Intent(this, MediaService.class));
getApplicationContext().unbindService(PlayerActivity.serviceConnection);
PlayerActivity.serviceBound = false;
//HERE NEED TO CHANGE SRC
}
}
}
在两种情况下,我需要将我的 PlayerActivity class 中的 FAB 图标从 Service.class 更改。 如何在不使用 "static" 且不使用单例的情况下访问 FAB?
试一试:
将此添加到 PlayerActivity
:
public void changeFloatingActionButtonIcon(int fabIcon) {
fab.setImageResource(fabIcon);
};
将此添加到 Services.class:
((PlayerActivity) getActivity()).changeFloatingActionButtonIcon(R.drawable.icon);
在役:
public static final String SERVICE_REQUEST = "com.example.app.service.SERVICE_REQUEST";
// ...
Intent data = new Intent(SERVICE_REQUEST);
LocalBroadcastManager.getInstance(ServiceClass.this).sendBroadcast(data);
在Activity中:
// in onCreate for example
reseiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// update your fab here
}
}
// ...
@Override
public void onStop() {
LocalBroadcastManager.getInstance(this).unregisterReceiver(reseiver);
super.onStop();
}
@Override
public void onStart() {
super.onStart();
LocalBroadcastManager.getInstance(this).registerReceiver(reseiver, new IntentFilter(ServiceClass.SERVICE_REQUEST));
}