android - 未显示 snackbar

标签 android android-snackbar

我从 BaseActivity 继承所有其他 Activity 。

public class BaseActivity extends AppCompatActivity {

    public static CoordinatorLayout coordinatorLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_base);
        coordinatorLayout = (CoordinatorLayout) findViewById(R.id
                .coordinatorLayout1);
    }
}

activity_base.xml

<?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/coordinatorLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="com.example.Activity.BaseActivity"> 
</android.support.design.widget.CoordinatorLayout>

尝试从非 Activity 类访问时不显示 Snackbar。

Snackbar snackbar = Snackbar.make(
        BaseActivity.coordinatorLayout,
        "Helooo....",
        Snackbar.LENGTH_LONG
);

最佳答案

Util 类 中创建一个 public 方法并且不要将 cordinatorLayout 设置为 public static。保留Activity 的 实例的weakReference,通过它您可以显示SnackBar。 方法如下。

public void showSnackBar(Activity activity, String message){
    View rootView = activity.getWindow().getDecorView().findViewById(android.R.id.content);
    Snackbar.make(rootView, message, duration).show();
}

关于android - 未显示 snackbar ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34477880/

相关文章:

android - 我可以将 Snackbar 放在底部导航上方吗?

android - 带 SnackBar 和 CoordinatorLayout 的 FloatingActionButton 不适用于混淆器

java - 使用 requestPinAppWidget() 放置小部件时如何启动小部件配置

android - 美国运营商(或与此相关的任何运营商)的空闲 TCP 超时

android - Samsung galaxy S4 图像捕捉问题

android - Nativescript 角度项目的多选下拉或选择器节点模块

android - 当我回到上一个 Activity 时 SnackBar 仍然显示

java - 尝试使用 Snackbar 时出现 InflateException

Android Snackbar 在文本后面显示白色背景

android - 在 EditText 中链接以检测标签