如何在BroadcastReceiver中添加Snackbars?

pra*_*raj 4 android broadcastreceiver android-support-library snackbar android-support-design

Snackbars通过在屏幕底部显示简短消息来提供有关操作的轻量级反馈.Snackbars可以包含一个动作.

Android还提供了一个toast,主要用于系统消息传递.Toasts与snackbars类似,但不包含动作,不能在屏幕上滑动.

我的问题

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class TestReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(final Context context, final Intent intent) {
        Toast.makeText(context, "status", Toast.LENGTH_LONG).show();
    }
}
Run Code Online (Sandbox Code Playgroud)

难道是更多钞票来显示SnackbarBroadcastReceiver一样Toast

Com*_*are 6

是否可以像在Toast中一样在BroadcastReceiver中显示snakbars?

一个BroadcastReceiver由活动或片段注册,通过registerReceiver(),可以要求活动或片段显示的小吃店.

清单注册BroadcastReceiver没有UI,因此没有地方可以显示小吃吧.它可以做的是在进程中的事件总线上发布一个事件(例如,LocalBroadcastManagergreenrobot的EventBus,Square的Otto),让你的前景中的任何UI知道接收到广播.如果UI层接收到消息,则该活动或片段可以显示快餐栏.如果事件总线事件未被提取,您可以Notification在适当的时候显示为后备事件.


pra*_*raj 5

我的工作代码....

public abstract  class TestReceiver  extends BroadcastReceiver {
    @Override   
    public void onReceive(final Context context, final Intent intent) {
        onNetworkChange();
    } 

    protected abstract void onNetworkChange();
}
Run Code Online (Sandbox Code Playgroud)

在主要活动中

public class MainActivity extends Activity  {

    public void onCreate() {
        ...  mReceiver = new TestReceiver () {
            @Override
            protected void onNetworkChange() {
            snackbar = Snackbar.make(Clayout, "Please check your internet connection and try again", Snackbar.LENGTH_SHORT);
            snackbar.setAction("X", snackbarClickListener);snackbar.setActionTextColor(Color.GREEN);
            ColoredSnackbar coloredsnakbar=new ColoredSnackbar();
            coloredsnakbar.confirm(snackbar).show();
            }
        };      
    }
}
Run Code Online (Sandbox Code Playgroud)