我已经用 INDEFINITE LENGTH 显示了android小吃店,但是如何在互联网连接时关闭小吃店,没有任何动作或持续时间。我必须检查互联网连接与否。之后互联网小吃店将自动关闭,无任何行动或持续时间。如果有人知道,请帮助我。
这是我的代码
public static void snack (HashMap<String,View.OnClickListener> actions,int priority,String message,Activity context){
Snackbar B = Snackbar.make(context.findViewById(android.R.id.content), message, Snackbar.LENGTH_LONG);
if(actions!=null){
Iterator iterator = actions.entrySet().iterator();
B.setDuration(Snackbar.LENGTH_INDEFINITE);
while (iterator.hasNext()) {
Map.Entry pair = (Map.Entry)iterator.next();
B.setAction((String)pair.getKey(),(View.OnClickListener)pair.getValue());
iterator.remove(); // avoids a ConcurrentModificationException
}}
switch (priority)
{
case 0:
B.getView().setBackgroundColor(context.getResources().getColor(R.color.color_pinkbutton));
break;
case 1:
B.getView().setBackgroundColor(Color.parseColor("#66ccff"));
break;
case 2:
B.getView().setBackgroundColor(Color.parseColor("#66ff33"));
break;
}
B.show();
使用活动调用上述方法后如下
If (NetworkCheck.isNetworkAvailable(this) == false) {
MyApplication.snack(null, 0, "Network Connection failed.",class.this);
else
答案 0 :(得分:6)
我制作了这个单例实用程序类。 它使应用程序类更清洁,最适合未来可维护的小吃店。
public class SnackBarUtils {
private static SnackBarUtils mInstance = null;
private Snackbar mSnackBar;
private SnackBarUtils() {
}
public static SnackBarUtils getInstance() {
if (mInstance == null) {
mInstance = new SnackBarUtils();
}
return mInstance;
}
public void hideSnackBar() {
if (mSnackBar != null) {
mSnackBar.dismiss();
}
}
public void showProblemSnackBar(final Activity activity, final String message) {
mSnackBar = Snackbar.make(activity.findViewById(android.R.id.content), message, Snackbar.LENGTH_INDEFINITE);
// Changing action button text color
View sbView = mSnackBar.getView();
TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.YELLOW);
mSnackBar.show();
}
}
答案 1 :(得分:1)
您可以按如下方式对代码进行更改:
Snackbar B; //make it as global
public static void snack (HashMap<String,View.OnClickListener> actions,int priority,String message,Activity context){
B = Snackbar.make(context.findViewById(android.R.id.content), message, Snackbar.LENGTH_LONG);
if(actions!=null){
Iterator iterator = actions.entrySet().iterator();
B.setDuration(Snackbar.LENGTH_INDEFINITE);
while (iterator.hasNext()) {
Map.Entry pair = (Map.Entry)iterator.next();
B.setAction((String)pair.getKey(),(View.OnClickListener)pair.getValue());
iterator.remove(); // avoids a ConcurrentModificationException
}}
switch (priority){
case 0:
B.getView().setBackgroundColor(context.getResources().getColor(R.color.color_pinkbutton));
break;
case 1:
B.getView().setBackgroundColor(Color.parseColor("#66ccff"));
break;
case 2:
B.getView().setBackgroundColor(Color.parseColor("#66ff33"));
break;
}
B.show();
制作隐藏零食店的另一种方法
private static hideSnackbar(){
if(B !=null && B.isShown()){
B.dismiss();
}
}
在您的情况下
If (NetworkCheck.isNetworkAvailable(this) == false) {
MyApplication.snack(null, 0, "Network Connection failed.",class.this)
}else{
MyApplication.hideSnackbar();
}
答案 2 :(得分:0)
您应该创建广播接收器并接收以下事件
public static void main(String[] args) throws Exception {
Neo4jConnection connect = (Neo4jConnection) DriverManager.getConnection("jdbc:neo4j://localhost:7474","neo4j","Neo4J");
final PreparedStatement statement = connect.prepareStatement("MATCH (n:USER) RETURN n LIMIT 25");
final ResultSet result = statement.executeQuery();
System.out.println(result.getFetchSize());
result.close();
statement.close();
connect.close();
}
并在您的活动/片段中订阅
完整信息在http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html
答案 3 :(得分:0)
对于 kotlin 人员,将此方法添加到您的 Utils 类
fun showNoNetworkSnackBar(activity: Activity,message: String):Snackbar {
val snackbar: Snackbar = Snackbar.make(
activity.findViewById(android.R.id.content),
message, Snackbar.LENGTH_INDEFINITE
)
return snackbar
}
那就这样称呼吧
val snackbar = Utils.showNoNetworkSnackBar(this,"No Internet")
snackbar.show or snackbar.dismiss