Autore Topic: Alert Dialog non viene mostrata in ordine di dichiarazione!  (Letto 468 volte)

Offline Bia

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG L Fino (D290N)
  • Sistema operativo:
    Windows 8
Alert Dialog non viene mostrata in ordine di dichiarazione!
« il: 17 Settembre 2015, 16:36:21 CEST »
0
Buon pomeriggio a tutti, sono nuovo del forum :-) e spero si riesca a trovare una soluzione al mio problema.
Come detto da titlo l'allert dialog non viene mostrata in ordine di dichiarazione. Ossia la mia situazione è questa:
ho un semplice bottone che al click,prima di inviare una intent dovrebbe mostrare una dialog informativa, il problema è che parte prima l' intent e se torno indietro mi mostra la dialog.
Ecco il mio codice:
Codice: [Seleziona]
esploraBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                   
                boolean installed = appInstalledOrNot("com.wikitude");
               
                if(installed){

                    loadAllert(); // funzione che mi carica l'allert
                 
                    Intent i = new Intent();
                    PackageManager manager = getPackageManager();
                    i = manager.getLaunchIntentForPackage("com.wikitude");
                    i.addCategory(Intent.CATEGORY_LAUNCHER);
                    startActivity(i);


Mentre questa è la funzione loadallert:
Codice: [Seleziona]
  public void loadAllert(){
        AlertDialog.Builder adb = new AlertDialog.Builder(this);
        LayoutInflater adbInflater = LayoutInflater.from(this);
        View eulaLayout = adbInflater.inflate(R.layout.checkbox, null);
        dontShowAgain = (CheckBox) eulaLayout.findViewById(R.id.skip);
        adb.setView(eulaLayout);
        adb.setTitle("Istruzioni");
        adb.setMessage(Html.fromHtml("Per avviare l'esperienza in realtà aumentata\n insrire nella barra di ricerca di Wikitude MEasyTaaras"));
        adb.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
             
                String checkBoxResult = "NOT checked";
                if (dontShowAgain.isChecked())
                    checkBoxResult = "checked";
                SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
                SharedPreferences.Editor editor = settings.edit();
                editor.putString("skipMessage", checkBoxResult);
               
                editor.commit();

               
                return;
            }
        });

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

    }

Spero di esser stato chiaro aspetto vostre risposte grazie ;-)

Offline pietroconti89

  • Utente normale
  • ***
  • Post: 164
  • Respect: +19
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note 3 N9005
  • Sistema operativo:
    Windows / Mac OSX
Re:Alert Dialog non viene mostrata in ordine di dichiarazione!
« Risposta #1 il: 18 Settembre 2015, 00:49:53 CEST »
0
Beh tu avvi l allert dialog e a seguire starti l activity,   se vuoi che essa parte solo al click del bottone dell allert dialog ,  devi spostare lo startactivity esattamente nel metodo
setPositiveButton. .. capi ?

Inviato dal mio SM-N9005 utilizzando Tapatalk


Offline Bia

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG L Fino (D290N)
  • Sistema operativo:
    Windows 8
Re:Alert Dialog non viene mostrata in ordine di dichiarazione!
« Risposta #2 il: 18 Settembre 2015, 08:25:11 CEST »
0
Grazie mille per la risposta @pieroconti89, avevo già pensato a questa soluzione. Il problema è che questa dialog potrà non esser visualizzata sempre, infatti  do la possibilità di non mostrarla più in seguito...facendo ciò non potrò neanche più avviare l'intent..o sbaglio? :-\

Offline pietroconti89

  • Utente normale
  • ***
  • Post: 164
  • Respect: +19
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note 3 N9005
  • Sistema operativo:
    Windows / Mac OSX
Re:Alert Dialog non viene mostrata in ordine di dichiarazione!
« Risposta #3 il: 18 Settembre 2015, 09:03:38 CEST »
0
Grazie mille per la risposta @pieroconti89, avevo già pensato a questa soluzione. Il problema è che questa dialog potrà non esser visualizzata sempre, infatti  do la possibilità di non mostrarla più in seguito...facendo ciò non potrò neanche più avviare l'intent..o sbaglio? :-\
Allora bisogna chiarire meglio la circostanza in cui vuoi che si avvi l allert dialog e la circostanza in cui si avvii l activity ... spiegamela  meglio

Offline Bia

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG L Fino (D290N)
  • Sistema operativo:
    Windows 8
Re:Alert Dialog non viene mostrata in ordine di dichiarazione!
« Risposta #4 il: 18 Settembre 2015, 13:57:16 CEST »
0
Ho risolto con una soluzione forse banale però a me funziona 8-) ;-)..
Riepilogando il mio intento era che al click di un bottone veniva mostrata un alert informativa prima dell'avvio di un intent, inoltre davo la possibilità di non mostrare più l'allert in seguito.
Il mio problema era che mi partiva prima l'intent e poi l'alert, inoltre non potevo mettere il codice d'avvio dell'intent direttamente nell'alert poichè se si decideva di non mostrarla in seguito, non si sarebbe potuto avviare l'intent.
Soluzione (mia): :-)
mi sono dichiarato un altro booleano e  inserito un else if con un altra condizione
Codice: [Seleziona]
  esploraBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                    boolean installed = appInstalledOrNot("com.wikitude");

//*****testIf è il boolean utilizzato*******

                    if (installed && testIf == true) {

                        loadAlert(); // funzione che mi carica l'alert con intent all'interno

//***** condizione per avviare l'intent senza mostrare l'alert***********
                    } else if(installed && testIf== false) {

                        Intent i = new Intent();
                        PackageManager manager = getPackageManager();
                        i = manager.getLaunchIntentForPackage("com.wikitude");
                        i.addCategory(Intent.CATEGORY_LAUNCHER);
                        startActivity(i);