Android snackbar.show()在setAction中不起作用
在重试操作的Android snackbar.show()在setAction中不起作用,android,material-design,android-snackbar,Android,Material Design,Android Snackbar,在重试操作的OnClick上,我想再次显示相同的Snackbar。但它不起作用 您必须编写snackbar.show()在onClick之外,如下所示 snackbar = Snackbar.make(getWindow().getDecorView().getRootView(),"Please check your internet connection", Snackbar.LENGTH_INDEFINITE) .setAction("RETRY", new Vie
OnClick
上,我想再次显示相同的Snackbar。但它不起作用 您必须编写snackbar.show()代码>在onClick
之外,如下所示
snackbar = Snackbar.make(getWindow().getDecorView().getRootView(),"Please check your internet connection", Snackbar.LENGTH_INDEFINITE)
.setAction("RETRY", new View.OnClickListener() {
@Override
public void onClick(View view) {
snackbar.show();
}
});
据我所知,你不能在snackbar中用动作重现snackbar。下面是一个使用按钮弹出snackbar的示例。希望能有帮助
有一个错误报告。请看一看。因此,在bug修复程序发布之前,您必须显示另一个snackbar。所以总共你必须有两个斯那巴。下面给出了一个例子
public static boolean isNetworkAvailable(final Context context) {
final ConnectivityManager connectivityManager = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE));
return connectivityManager.getActiveNetworkInfo() != null && connectivityManager.getActiveNetworkInfo().isConnected();
}
void ShowSnackBar(){
Snackbar snackbar = Snackbar
.make(coordinatorLayout,"Check internet connection", Snackbar.LENGTH_LONG)
.setAction("Retry", new View.OnClickListener() {
@Override
public void onClick(View view) {
// Write Retry Code like making api call here
// apiCall();
}
});
snackbar.show();
}
if(!isNetworkAvailable()){
ShowSnackBar();
}
试试这个,如果还有问题请告诉我你认为它将如何工作/如何在单击“重试”后再次显示相同的snackbar??第一次如何显示?我将在不同的功能中显示它。我全局声明了snackbar。单击“重试”按钮时会发生什么情况?我正在执行网络签入onClick功能,如果没有网络,我想显示相同的snackbaragain@VenkateswaranBalasubramanian,在RETRY
中,您必须添加一些函数来检查连接,如果没有连接,该函数将检查连接。在该函数检查网络中使用相同的代码来显示snackbar。他可能需要此代码。如果您认为您更好地理解了它,您可以发布您的。可能他想重新显示snackbar我知道@droidvyes他想显示又是snackbar,但是它是在代码中写的吗?谢谢你,它现在工作了。我用了这个。public void onClick(View-View){if(isNetworkAvailable){/}else{ShowSnackBar();}}}@VenkateswaranBalasubramanian请投票表决为正,以向人们表明我正确无误我在单独的函数中只使用了一个Snackbar。从任何地方调用该函数。现在工作正常了。哦,太好了。任何关于如何报告错误的信息。
private void showFirstSnackbar(View view)
final Snackbar snackbar = Snackbar.make(view, "Please check your internet connection", Snackbar.LENGTH_INDEFINITE);
snackbar.setAction("RETRY", new View.OnClickListener() {
@Override
public void onClick(View view) {
snackbar.dismiss();
showAnotherSnackBar(view);
}
});
}
private void showAnotherSnackBar(View view){
final Snackbar snackbar = Snackbar.make(view, "Please check your internet connection", Snackbar.LENGTH_INDEFINITE);
snackbar.setAction("RETRY", new View.OnClickListener() {
@Override
public void onClick(View view) {
snackbar.dismiss();
showFirstSnackbar(view);
}
});
}
public static boolean isNetworkAvailable(final Context context) {
final ConnectivityManager connectivityManager = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE));
return connectivityManager.getActiveNetworkInfo() != null && connectivityManager.getActiveNetworkInfo().isConnected();
}
void ShowSnackBar(){
Snackbar snackbar = Snackbar
.make(coordinatorLayout,"Check internet connection", Snackbar.LENGTH_LONG)
.setAction("Retry", new View.OnClickListener() {
@Override
public void onClick(View view) {
// Write Retry Code like making api call here
// apiCall();
}
});
snackbar.show();
}
if(!isNetworkAvailable()){
ShowSnackBar();
}
private void showFirstSnackbar(View view)
final Snackbar snackbar = Snackbar.make(view, "Please check your internet connection", Snackbar.LENGTH_INDEFINITE);
snackbar.setAction("RETRY", new View.OnClickListener() {
@Override
public void onClick(View view) {
snackbar.dismiss();
showAnotherSnackBar(view);
}
});
}
private void showAnotherSnackBar(View view){
final Snackbar snackbar = Snackbar.make(view, "Please check your internet connection", Snackbar.LENGTH_INDEFINITE);
snackbar.setAction("RETRY", new View.OnClickListener() {
@Override
public void onClick(View view) {
snackbar.dismiss();
showFirstSnackbar(view);
}
});
}
void ShowSnackBar(){
Snackbar snackbar = Snackbar
.make(coordinatorLayout,"Check internet connection", Snackbar.LENGTH_LONG)
.setAction("Retry", new View.OnClickListener() {
@Override
public void onClick(View view) {
if(isNetworkAvailable){
///called api
}else{
ShowSnackBar();
}
}
});
snackbar.show();
}
if(!isNetworkAvailable()){
ShowSnackBar();
}