重新打开应用程序后,Snackbar 不再出现

Posted

技术标签:

【中文标题】重新打开应用程序后,Snackbar 不再出现【英文标题】:Snackbar doesn't appear again after Re-Opening the App 【发布时间】:2016-06-20 03:27:16 【问题描述】:

我的应用程序使用广播侦听器查找连接状态。 如果电话离线,应该会出现一个 Snackbar。 Snackbar 有一个 Action,用于打开 Networksettings。

如果我点击它,我的网络设置就会打开。如果我不打开互联网并返回应用程序,我的 Snackbar 将不会再次显示,尽管它被调用(检查它!)。

如果我将 Snackbar 设置为 null 并再次对其进行初始化,它会起作用!

主活动:

@Override
protected void onResume() 
    super.onResume();

    registerReceiver(networkListener, new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE"));


@Override
protected void onPause() 
    super.onPause();

    unregisterReceiver(networkListener);


@Override
public void ToggleSnackbar(boolean ShowHide) 
if (ShowHide) 
    snbInternetState.show();

else 
    snbInternetState.dismiss();


    bOnline = ShowHide;

网络监听器:

public class NetworkListener extends BroadcastReceiver 

    private SnackbarInterface snbInterface;

    public NetworkListener(SnackbarInterface snbInterface) 
        this.snbInterface = snbInterface;
    

    @Override
    public void onReceive(Context context, Intent intent) 
        ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo ni = cm.getActiveNetworkInfo();

        if (ni == null || !ni.isConnectedOrConnecting()) 
            snbInterface.ToggleSnackbar(true);
        
        else if (ni != null && ni.isConnected()) 
            snbInterface.ToggleSnackbar(false);
        
    

    public interface SnackbarInterface 
        void ToggleSnackbar(boolean ShowHide);
    

有人知道如何解决这个问题吗?

谢谢!

【问题讨论】:

每次需要重新创建Snackbar有什么问题? 我认为这不是“最好”的方式......我想知道为什么会出现这个问题! 【参考方案1】:

我通过在“onResume()”中重新创建 Snackbar 解决了这个问题。

【讨论】:

以上是关于重新打开应用程序后,Snackbar 不再出现的主要内容,如果未能解决你的问题,请参考以下文章

退出 RIDE 应用程序后,RIDE 将不再打开,因为 python 退出工作

在 Flutter 中打开应用程序时如何显示 Snackbar 或底部工作表?

如何在关闭屏幕时关闭打开的 SnackBar?

滚动关闭和打开后,视图重新出现在 UITableViewCell 中

电脑一打开有PDF的文件夹就出现这个问题 然后就是Windows就停止运行

打开 SnackBar 内部函数发送到 AppBar