2017-09-08 1 views
0

J'ai un Webview Dans que je donne quelques instructions page sur le chargement des pages WebView finiComment éviter d'alerte continue sur WebView Chargement de la page terminée? Android

Ceci est mon exemple de code

public void onPageFinished(WebView view, String url) { 

if (!getSharedPreferences("MainA_SP", MODE_PRIVATE) 
     .getBoolean("checkbox", false)) { 

    AlertDialog.Builder adb=new AlertDialog.Builder(MainA.this); 
    LayoutInflater adbInflater = LayoutInflater.from(MainA.this); 
    View eulaLayout = adbInflater.inflate(R.layout.instpopup, null); 
    chkbx = (CheckBox)eulaLayout.findViewById(R.id.skip); 
    adb.setView(eulaLayout); 
    adb.setTitle("Welcome To Sample Page"); 
    adb.setMessage(Html.fromHtml("App Instructions .....")); 
    adb.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      String checkBoxResult = "NOT checked"; 
      if (chkbx.isChecked()) checkBoxResult = "checked"; 
      SharedPreferences settings = getSharedPreferences(MainA_SP, 0); 
      SharedPreferences.Editor editor = settings.edit(); 
      editor.putString("skipMessage", checkBoxResult); 
      // Commit the edits! 
      editor.commit(); 
      return; 
     } }); 

    adb.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      String checkBoxResult = "NOT checked"; 
      if (chkbx.isChecked()) checkBoxResult = "checked"; 
      SharedPreferences settings = getSharedPreferences(MainA_SP, 0); 
      SharedPreferences.Editor editor = settings.edit(); 
      editor.putString("skipMessage", checkBoxResult); 
      // Commit the edits! 
      editor.commit(); 
      return; 
     } }); 
    SharedPreferences settings = getSharedPreferences(MainA_SP, 0); 
    String skipMessage = settings.getString("skipMessage", "NOT checked"); 
    if (!skipMessage.equalsIgnoreCase("checked")) adb.show(); 
} 

try{ 
    if (progressBar.isShowing()) { 
     progressBar.dismiss(); 
     . 
     . 
     . 
     . 

    } 
}catch(Exception exception){ 
    exception.printStackTrace(); 
} 
} 

Voici son très bien avec cases à cocher et sharedprefs

travail

Mais le problème est que j'ai donné cette alerte dans la page de chargement terminé Je reçois plusieurs fois d'alerte pour une seule page URL unique

J'ai besoin de cliquer sur l'alerte chaque fois que j'ouvre l'App ... Si je coche la case à cocher son ne pas montrer Mais pour la première course d'alerte montre plusieurs fois

Mise à jour

Je veux montrer Alerte à la page a terminé le chargement avec succès

Répondre

0

Si vous souhaitez afficher l'alerte à la fois après avoir terminé, vous pouvez utiliser la valeur booléenne pour vérifier si elle est visible ou non comme exemple ci-dessous.

private boolean alertVisiblity = false; 

onPageFinished(){ 

//show your alert here 
if(!alertVisiblity){ 
alertVisiblity = true; 
new AlertDialog.Builder(MainActivity.this) 
       .setCancelable(false) 
       .setTitle("Alert") 
       .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialogInterface, int i) { 
         dialogInterface.dismiss(); 
         alertVisiblity = false; //or if you want to show it once never make it false or you can make it false before next call 
        } 
       }).show(); 


} 
+0

Merci user @ SwapnilNandapur ... Ma question est que lorsque la page Web en cours de chargement terminé Alert montre en permanence pour la première fois (Si je coche la case à cocher son ne montrera pas) Je veux montrer à la page Alerte charge réussie – MLN