Hier, wenn eine Netzwerkänderung auftritt, wiederholt die Snackbar drei oder vier Mal wiederholt, wenn eine Netzwerkänderung auftritt. wie man es vermeidet? Vielen Dank im Voraussnackbar wird automatisch wiederholt
Haupt activity.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_main);
registerReceiver(mHandleMessageReceiver, new IntentFilter("IS_NETWORK_AVAILABLE"));
//toolbar = (Toolbar) findViewById(R.id.toolbar);
myAnim= AnimationUtils.loadAnimation(this, R.anim.bounce);
//setSupportActionBar(toolbar);
//initNavigationDrawer();
viewPager = (ViewPager) findViewById(R.id.splash);
ImageAdapter adapter = new ImageAdapter(this);
viewPager.setAdapter(adapter);
}
private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
try{
boolean isNetworkAvailable = intent.getBooleanExtra("IS_NETWORK_AVAILABLE", false);
String networkStatus = isNetworkAvailable ? "connected" : "disconnected";
Snackbar snack = Snackbar
.make(findViewById(R.id.activity_main), "Network Status : " + networkStatus, Snackbar.LENGTH_SHORT);
View sbView = snack.getView();
TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.YELLOW);
if (networkStatus=="connected") {
snack.show();
}
else if(networkStatus=="disconnected"){
snack.make(findViewById(R.id.activity_container), "Network Status : " + networkStatus, Snackbar.LENGTH_SHORT);
snack.show();
}
unregisterReceiver(mHandleMessageReceiver);
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
};
NetworkStateChangeReceiver.java
public class NetworkStateChangeReceiver extends BroadcastReceiver {
public static final String NETWORK_AVAILABLE_ACTION = "com.example.arun4fms.efix.NetworkStateChangeReceiver";
public static final String IS_NETWORK_AVAILABLE = "isNetworkAvailable";
@Override
public void onReceive(Context context, Intent intent) {
Intent networkStateIntent = new Intent(NETWORK_AVAILABLE_ACTION);
networkStateIntent.putExtra(IS_NETWORK_AVAILABLE, isConnectedToInternet(context));
context.sendBroadcast(networkStateIntent);
}
private boolean isConnectedToInternet(Context context) {
try {
if (context != null) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
return networkInfo != null && networkInfo.isConnected();
}
return false;
} catch (Exception e) {
Log.e(NetworkStateChangeReceiver.class.getName(), e.getMessage());
return false;
}
}
}
Sie können versuchen, snackBar.dismiss zu machen(); vor dem Zeigen, aber es ist smth in Ihrer Logik, wenn es für 3 Mal jedes Mal auslöst –