2011-04-24 5 views
1

Bonjour et merci d'avance pour tout conseil que vous pouvez offrir avec le problème suivant. J'ai une activité simple qui montre un AlertDialog. Cela fonctionne bien si j'instancie le AlertDialog dans le constructeur. Cependant, si je déplace la AlertDialog à une autre méthode, celle déclenchée par un événement Timer, rien ne se passe et je ne vois pas d'erreur:Android: AlertDialog déclenché par Minuterie

public class RecipesPage extends Activity 
{ 
    private WebView browser; 
    private Timer timer = new Timer(); 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.recipes); 

     browser = (WebView)findViewById(R.id.webkit); 
     browser.getSettings().setJavaScriptEnabled(true); 
     browser.loadUrl("file:///android_asset/html/index.html"); 

     TimerTask task=new TimerTask() { 
      public void run() { 
       notifyMe(); 
      } 
     }; 
     timer.schedule(task, 10000); 
    } 

    private void notifyMe() 
    { 
     new AlertDialog.Builder(this) 
     .setTitle("MessageDemo") 
     .setMessage("eek!") 
     .setNeutralButton("Close", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dlg, int sumthin) { 
       // do nothing -- it will close on its own 
      } 
     }) 
     .show(); 
    } 

} 

Répondre

1

Utilisez un Handler au lieu de TimerTask - elle se déroulera votre Runnable sur le thread d'interface utilisateur .

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.recipes); 

    browser = (WebView)findViewById(R.id.webkit); 
    browser.getSettings().setJavaScriptEnabled(true); 
    browser.loadUrl("file:///android_asset/html/index.html"); 

    Handler handler = new Handler(); 
    handler.postDelayed(
     new Runnable() { 
      public void run() { 
       notifyMe(); 
      } 
     }, 10000L); 
} 
+0

Merci beaucoup, cela a sauvé ma journée :) – nonozor