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();
}
});
在重试操作的OnClick
上我想再次显示相同的Snackbar.But它无法正常工作!!
答案 0 :(得分:2)
您必须在snackbar.show();
之外写下onClick
,如下所示。
Snackbar snackbar = Snackbar
.make(coordinatorLayout, "No internet connection!", Snackbar.LENGTH_LONG)
.setAction("RETRY", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
View sbView = snackbar.getView();
TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.YELLOW);
snackbar.show();
答案 1 :(得分:1)
private void updateQuestion(int currentQuestion) {
// Update Questions
String questionString = "Q" + currentQuestion;
TextView textView = (TextView)findViewById(R.id.QuestionLabel);
textView.setText(getString(getResources().getIdentifier(questionString, "string", this.getPackageName())));
// Update Answers
String answerString;
RadioGroup radioGroup = (RadioGroup)findViewById(R.id.rgQuestions);
for (int i = 0; i < radioGroup .getChildCount(); i++)
{
answerString = questionString + "A" + i;
((RadioButton) radioGroup.getChildAt(i)).setText(getString(getResources().
getIdentifier(answerString, "string", this.getPackageName())));
}
}
答案 2 :(得分:0)
答案 3 :(得分:0)
有关于此的报告错误。请看here。所以在bug修复发布之前你必须展示另一个小吃吧。总共你必须有两个snacbars。示例如下:
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);
}
});
}
尝试这个并告诉我是否还有问题
答案 4 :(得分:0)
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();
}
答案 5 :(得分:-1)
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();
}