无法在android中解析Snackbar.make()

时间:2017-07-14 12:04:58

标签: android android-snackbar

我正在尝试在MainActivity代码中显示一个快餐栏。被称为显示小吃店的方法如下。

private void showSnackBar(int content_string, int action_string,
                          View.OnClickListener listener) {

    Snackbar.make(R.id.myCoordinatorLayout,
            getString(explanation_string),
            Snackbar.LENGTH_INDEFINITE)
    .setAction(getString(action_string), listener)
    .show();
}

我使用以下调用

调用此方法
showSnackBar(R.string.content_string,
                R.string.action_string,
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                       //Some operation
                    }
                });

但是,在showSnackbar方法中我得到一个错误,说无法解析Snackbar.show(int,java.lang.String,int)。如果有人能够指出我在这里缺少什么,那将是有帮助的,这就是错误。 这些是我在build.gradle文件中添加的依赖项

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile 'com.google.android.gms:play-services-location:11.0.2'
compile "com.android.support:support-core-utils:25.4.0"
compile 'com.android.support:design:25.3.1'
}

3 个答案:

答案 0 :(得分:1)

现在在02/06/2018,配置'compile'已更改为'implementation' 像这样

implementation 'com.android.support:design:25.3.1'

https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration?utm_source=android-studio#new_configurations

答案 1 :(得分:0)

Snackbar将View作为第一个参数而不是视图的id。这是docs for the method.

make(View view, CharSequence text, int duration)

因此,不要传递id,而是传递膨胀的视图。

答案 2 :(得分:0)

  

Snackbars 提供有关操作的轻量级反馈。他们表现出一个   移动屏幕底部的简短消息和左下方的消息   更大的设备。

使用

进行编译
CoordinatorLayout's Object

<强> FYI

第一个参数应为 R.id ,而不是 Snackbar.make(myCoordinatorLayoutOBJ,getString(explanation_string),Snackbar.LENGTH_INDEFINITE).setAction(getString(action_string), listener).show();

RecyclerView.OnItemTouchListener