Autore Topic: Activity torna in primo piano in automatico  (Letto 292 volte)

Offline Fenicexx

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
Activity torna in primo piano in automatico
« il: 27 Agosto 2014, 17:23:08 CEST »
0
Ciao,

il mio problema è il seguente:
ho una classe Prenotation dove ho sviluppato un form per prendere in input alcune informazioni, una volta finita la compilazione, quando clicca sul bottone (i dati vengono inseriti in un db su un server) si apre un'activity di "successo". La classe dell'activity di successo oltre a visualizzare un messaggio e un bottone, invia in automatico una mail.

Il problema è che l'activity di successo rimane aperta per pochi secondi e poi mi ritrovo l'activity precedente (Prenotation).

Ecco le classi:

Prenotation.java
Codice: [Seleziona]
public class Prenotation extends Activity implements OnClickListener{

        JSONParser jsonParser = new JSONParser();

        private EditText insert_name;
        private EditText insert_lastname;
        private TextView output_date;
        private EditText insert_email;
        private EditText insert_luogoNascita;
        private EditText insert_codFiscale;
        private EditText insert_phone;
        private EditText insert_fax;
        private Button submit;

        private ImageButton date;
        private int year;
        private int month;
        private int day;
        private int success;
        private static final int DATE_PICKER_ID = 1111;
       
        ValidazioneEmail e_mail = new ValidazioneEmail();
        ValidazioneCodFiscale cod_fiscale = new ValidazioneCodFiscale();

        //to determine JSON signal insert success/fail
        // url to insert new idiom (change accordingly)
        private static String url_insert_new = "http://www.****.it/test/insert.php";
        // JSON Node names
        private static final String TAG_SUCCESS = "success";
       
       
       
       

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

                insert_name = (EditText) findViewById(R.id.edit_name);
                insert_lastname = (EditText) findViewById(R.id.edit_lastname);
                insert_email = (EditText) findViewById(R.id.edit_email);
                output_date = (TextView) findViewById(R.id.date);
                insert_codFiscale = (EditText) findViewById(R.id.edit_codFiscale);
                insert_luogoNascita = (EditText) findViewById(R.id.edit_luogoNascita);
                insert_phone = (EditText) findViewById(R.id.edit_phone);
                insert_fax = (EditText) findViewById(R.id.edit_fax);
               
                /*Parte riguardante la data di compleanno*/
                date = (ImageButton) findViewById(R.id.imageButton1);
                final Calendar c = Calendar.getInstance();
                year  = c.get(Calendar.YEAR);
                month = c.get(Calendar.MONTH);
                day   = c.get(Calendar.DAY_OF_MONTH);
       

                date.setOnClickListener(new View.OnClickListener() {

                        public void onClick(View v) {
                                // Show the DatePickerDialog
                                showDialog(DATE_PICKER_ID);
                        }
                });
                /*fine data compleanno*/


                submit = (Button) findViewById(R.id.form_button);
                // button click event
                submit.setOnClickListener(this);

        }

        public void onClick(View v) {
                boolean isError = false;
               

                if (v.getId()==R.id.form_button){
                       
                        if( insert_name.getText().toString().length() == 0 ){
                                insert_name.setError("Inserisci il nome");
                                isError = true;
                        }

                        if( insert_lastname.getText().toString().length() == 0 ){
                                insert_lastname.setError("Inserisci il cognome");
                                isError = true;
                        }

                        if( output_date.getText().toString().length() == 0 ){
                                output_date.setError("Inserisci Data di Nascita");
                                isError = true;
                        }
                        if( (insert_email.getText().toString().length() == 0) || (e_mail.isEmailValid(insert_email.getText().toString())) == false ){
                                insert_email.setError("Email vuota o non valida");
                                isError = true;
                        }
                        if( (insert_codFiscale.getText().toString().length() == 0) || (cod_fiscale.validaCF(insert_codFiscale.getText().toString())) == false){
                                insert_codFiscale.setError("Codice fiscale vuoto o non valido");
                                isError = true;
                        }
                        if( insert_luogoNascita.getText().toString().length() == 0 ){
                                insert_luogoNascita.setError("Inserisci Luogo di Nascita");
                                isError = true;
                        }
                        if( insert_phone.getText().toString().length() == 0 ){
                                insert_phone.setError("Inserisci Telefono");
                                isError = true;
                        }

                        else{
                               
                                new InsertNewIdiom().execute();
                                Intent i = new Intent(Prenotation.this, SuccessPrenotation.class);
                               
                                 String pkg=getPackageName();
                                 
                                 i.putExtra(pkg+".Nome", insert_name.getText().toString());
                                 i.putExtra(pkg+".Cognome", insert_lastname.getText().toString());
                                 i.putExtra(pkg+".Email", insert_email.getText().toString());
                                 i.putExtra(pkg+".Data di nascita", output_date.getText().toString());
                                 i.putExtra(pkg+".Codice fiscale", insert_codFiscale.getText().toString());
                                 i.putExtra(pkg+".Luogo di nascita", insert_luogoNascita.getText().toString());
                                 i.putExtra(pkg+".Telefono", insert_phone.getText().toString());
                                 i.putExtra(pkg+".Fax", insert_fax.getText().toString());
                               
                                 startActivity(i);

                        }

                }
        }



        class InsertNewIdiom extends AsyncTask<String, String, String> {

                //capture values from EditText

               

                @Override
                protected void onPreExecute() {
                        super.onPreExecute();
                }

                /** * Inserisco nuovo record * */

                protected String doInBackground(String... args) {
                        // Building Parameters
                       
                        String nome = insert_name.getText().toString();
                        String cognome = insert_lastname.getText().toString();
                        String email = insert_email.getText().toString();
                        String data_nascita = output_date.getText().toString();
                        String cod_fiscal = insert_codFiscale.getText().toString();
                        String luogo_nascita = insert_luogoNascita.getText().toString();
                        String phone = insert_phone.getText().toString();
                        String fax = insert_fax.getText().toString();

                        List<NameValuePair> params = new ArrayList<NameValuePair>();
                        params.add(new BasicNameValuePair("nome", nome));
                        params.add(new BasicNameValuePair("cognome", cognome));
                        params.add(new BasicNameValuePair("email", email));
                        params.add(new BasicNameValuePair("data_nascita", data_nascita));
                        params.add(new BasicNameValuePair("cod_fiscale", cod_fiscal));
                        params.add(new BasicNameValuePair("luogo_nascita", luogo_nascita));
                        params.add(new BasicNameValuePair("phone", phone));
                        params.add(new BasicNameValuePair("fax", fax));
                        // getting JSON Object
                        // Note that create product url accepts GET method

                        JSONObject json = jsonParser.makeHttpRequest(url_insert_new, "GET", params);
                        // check log cat from response
                        Log.d("Insert New Idiom Response", json.toString());
                       
                       
                       
                       
                       
                       
                        // check for success tag
                        try {
                                success = json.getInt(TAG_SUCCESS);
                               
               
                                if (success == 1) {
                                } else {
                                        // failed to add new idiom
                                }
                        } catch (JSONException e) {
                                e.printStackTrace();
                        }
                       
                        return null;
                }
                /** * After completing background task Dismiss the progress dialog * **/

                protected void onPostExecute(String file_url) {
                }
        }

       
        // Register  DatePickerDialog listener
        private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() { // the callback received when the user "sets" the Date in the DatePickerDialog
                public void onDateSet(DatePicker view, int yearSelected,
                                int monthOfYear, int dayOfMonth) {
                        year = yearSelected;
                        month = monthOfYear;
                        day = dayOfMonth;

                        output_date.setText(new StringBuilder()
                        // Month is 0 based, just add 1
                        .append(day).append("/").append(month + 1).append("/")
                        .append(year).append(" "));
                }
        };


        protected Dialog onCreateDialog(int id) {
                switch (id) {
                case DATE_PICKER_ID:
                        return new DatePickerDialog(this,
                                        mDateSetListener,
                                        year, month, day);

                }
                return null;
        }

        /*fine della parte riguardante l'inserimento della data di nascita*/


}//chiusura Prenotation       

e la SuccessPrenotation.java
Codice: [Seleziona]
public class SuccessPrenotation extends Activity implements OnClickListener{
       
        private Button menu;
       
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_success_prenotation);
               
                Button back = (Button) findViewById(R.id.button_return);
               
               
               
                new InviaEmailTask().execute();
       
                back.setOnClickListener(this);
        }
       
       
        public void onClick(View v) {

                                Intent i = new Intent(this, AlessandriaActivity.class);
                                startActivity(i);
       
                }
       
       

        class InviaEmailTask extends AsyncTask<String,String,String>  {
       
                @Override
                protected void onPreExecute() {
                        super.onPreExecute();
                }
               
               
                @Override
            protected String doInBackground(String... params) {
                       
                        Intent intent=getIntent(); // l'intent di questa activity
                   
                    String pkg=getPackageName();
                   
                    String nome=intent.getStringExtra(pkg+".Nome");
                    String cognome=intent.getStringExtra(pkg+".Cognome");
                    String email=intent.getStringExtra(pkg+".Email");
                    String data_nascita=intent.getStringExtra(pkg+".Data di nascita");
                    String cod_fiscal=intent.getStringExtra(pkg+".Codice fiscale");
                    String luogo_nascita=intent.getStringExtra(pkg+".Luogo di nascita");
                    String telefono=intent.getStringExtra(pkg+".Telefono");
                    String fax=intent.getStringExtra(pkg+".Fax");
                       
                        String subject = "Prenotazione online";
                        String message = "Dettagli prenotazione: " +"\n\n"
                                                        +"      Nome: " + nome + "\n"
                                                        +"      Cognome: " + cognome + "\n"
                                                        +"      Data di nascita: " + data_nascita + "\n"
                                                        +"      Codice fiscale: " + cod_fiscal + "\n"
                                                        +"      Luogo di nascita: " + luogo_nascita + "\n"
                                                        +"      Email: " + email + "\n"
                                                        +"      Telefono: " + telefono + "\n"
                                                        +"      Fax: " + fax + "\n";

                        Mail m = new Mail("******@gmail.com","******");
                        String[] toArr = {"info@*****.it"};
                       
                        m.setTo(toArr);
                        m.setFrom("*****@gmail.com");
                        m.setSubject(subject);
                        m.setBody(message);
                 
                try {
                       m.send();
                       finish();
               } catch (Exception e1) {
                      e1.printStackTrace();
        }
                                return null;
               
               
               
        } //fine doInBackground
               
                protected void onPostExecute(String file_url) {
                }
       
        } //fine InviaEmailTask
       


}

Preciso che per il resto funziona tutto correttamente, sia l'inserimento nel db che l'invio della mail.

Qualche idea???

Grazie

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Activity torna in primo piano in automatico
« Risposta #1 il: 27 Agosto 2014, 17:36:04 CEST »
0
Da un rapido sguardo al codice mi sembra normale: hai messo finish() al termine della doInBackground.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Fenicexx

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
Re:Activity torna in primo piano in automatico
« Risposta #2 il: 27 Agosto 2014, 18:06:00 CEST »
0
Anche inserendolo non funziona.

La cosa strana è che ho appena risolto eliminando il finish() nel ramo try/catch di SuccessPrenotation.java.....non capisco perchè, ma funziona.

Grazie mille per la risposta.