Autore Topic: Activity non si chiude ma avviene un reload.  (Letto 691 volte)

Offline schumy79

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2 - GT-I9100
  • Sistema operativo:
    Win7 X64
Activity non si chiude ma avviene un reload.
« il: 18 Ottobre 2012, 10:17:51 CEST »
0
Ciao,
sempre per la mia applicazione del fantacalcio rilevo un problema nel momento in cui lascio il finish della mia activity. Il problema è che non si chiude! Nessun errore nel logcat.... Questo + il codice. Dove sbaglio? Grazie in anticipo.

Codice (Java): [Seleziona]
package it.fantacalcio;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.os.AsyncTask;
import it.fantacalcio.R;
import android.app.Activity;
import android.os.Bundle;
import android.app.ProgressDialog;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ArrayAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.RadioGroup;
import android.util.*;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.IntentFilter;
import android.database.Cursor;
import android.content.Intent;
import android.widget.CheckBox;
import android.telephony.SmsManager;
import android.app.PendingIntent;

public class Load_insert_formazione extends Activity {

        private static String url_read_class = "http://xxx";

        private ArrayList<HashMap<String, String>> list_rosa;
        private InputStream is = null;

        private ListView listview;
        private ArrayList<Load_insert_formazione_class> formazione = new ArrayList<Load_insert_formazione_class>();
        private RadioGroup sel_lista;
        private MyAppData Myappdata;
        private int tot_t, tot_p1, tot_p2, tot_out;
        private ProgressDialog pDialog;
        private Load_insert_formazione_class row_formazione;
        private Send_formazione_to_web send_formazione;
        private Delete_ultima_formazione_from_web del_ultima_form;
        public static final int progress_bar_type = 0;
        public static final int progress_bar_type_send_sms = 1;
        public static final int progress_bar_type_send_mail = 2;
        public static final int progress_bar_type_load_rosa = 3;
        public static final int error_bar_type = 4;
        private int progress = 0;
        private ContentResolver cr;
        private String number, mail_address, text_message, mail_message,
                        text_message_t, text_message_p1, text_message_p2, result;
        private MyDatabase mydb;
        private AlertDialog.Builder adb;
        private LayoutInflater adbInflater;
        private View decisione_sms_text;
        private CheckBox sms, mail;
        private String usr, pwd, id_squadra = null;
        private Load_insert_formazione_adapter adapter;

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);

                Myappdata = (MyAppData) getApplication();
                mydb = new MyDatabase(getApplicationContext());
                usr = Myappdata.get_user();
                pwd = Myappdata.get_pwd();
                id_squadra = Myappdata.get_id_team();

                if (usr == "" || pwd == "") {

                        Toast not_logged = Toast.makeText(getApplicationContext(),
                                        "Non sei Loggato. Fare Prima Login", Toast.LENGTH_SHORT);
                        not_logged.show();
                        this.finish();

                } else {

                        setContentView(R.layout.main_insert_formazione);
                        listview = (ListView) findViewById(R.id.array_insert_formazione);
                        adapter = new Load_insert_formazione_adapter(this,
                                        R.layout.insert_formazione, formazione);
                        TextView giornata = (TextView) findViewById(R.id.formazione_giornata);
                        giornata.setText(this.getString(R.string.giornata) + " "
                                        + String.valueOf(Myappdata.get_id_current_game()));
                        sel_lista = (RadioGroup) findViewById(R.id.sel_lista);
                        send_formazione = new Send_formazione_to_web(
                                        getApplicationContext());

                        del_ultima_form = new Delete_ultima_formazione_from_web(
                                        getApplicationContext());

                        adb = new AlertDialog.Builder(Load_insert_formazione.this);
                        adbInflater = LayoutInflater.from(getApplicationContext());

                        new load_rosa().execute();

                }
        }

        public void save_formazione(View view) {

                tot_t = Myappdata.get_tot_t();
                tot_p1 = Myappdata.get_tot_p1();
                tot_p2 = Myappdata.get_tot_p2();
                tot_out = Myappdata.get_tot_out();

                if (tot_t == 11 && tot_p1 == 4 && tot_p2 == 3) {

                        formazione = Myappdata.get_array_formazione();

                        decisione_sms_text = adbInflater.inflate(
                                        R.layout.decisione_sms_mail, null);
                        sms = (CheckBox) decisione_sms_text.findViewById(R.id.sms);
                        mail = (CheckBox) decisione_sms_text.findViewById(R.id.mail);
                        adb.setView(decisione_sms_text);
                        adb.setTitle(this.getString(R.string.metodo_invio));
                        adb.setPositiveButton(this.getString(R.string.continua),
                                        new DialogInterface.OnClickListener() {
                                                public void onClick(DialogInterface dialog, int which) {

                                                        if (sms.isChecked() || mail.isChecked()) {

                                                                Intent intent = new Intent(Intent.ACTION_PICK,
                                                                                ContactsContract.Contacts.CONTENT_URI);
                                                                startActivityForResult(intent, 1);

                                                        } else {
                                                                new send_formazione().execute();
                                                        }
                                                }
                                        });

                        adb.setNegativeButton(this.getString(R.string.annulla),
                                        new DialogInterface.OnClickListener() {
                                                public void onClick(DialogInterface dialog, int which) {
                                                        sms.setChecked(false);
                                                        mail.setChecked(false);
                                                }
                                        });
                        adb.show();

                } else {

                        if (tot_t != 11) {

                                Toast.makeText(getApplicationContext(),
                                                "Verificare numero giocatori titolari",
                                                Toast.LENGTH_SHORT).show();
                        }

                        if (tot_p1 != 4) {
                                Toast.makeText(getApplicationContext(),
                                                "Verificare numero giocatori in panchina",
                                                Toast.LENGTH_SHORT).show();
                        }

                        if (tot_p2 != 3) {
                                Toast.makeText(getApplicationContext(),
                                                "Verificare numero giocatori in panchina 2",
                                                Toast.LENGTH_SHORT).show();
                        }

                        listview.refreshDrawableState();

                }

        }

        @Override
        protected Dialog onCreateDialog(int id) {
                switch (id) {
                case progress_bar_type: // progress bar for Upload
                        pDialog = new ProgressDialog(this);
                        pDialog.setMessage("Caricamento formazione in corso. Attendere...");
                        pDialog.setIndeterminate(false);
                        pDialog.setMax(100);
                        pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                        pDialog.setCancelable(false);
                        pDialog.setCanceledOnTouchOutside(false);
                        pDialog.show();
                        return pDialog;
                case progress_bar_type_send_sms: // progress bar for SMS
                        pDialog = new ProgressDialog(this);
                        pDialog.setMessage("Spedizione SMS in corso");
                        pDialog.setIndeterminate(false);
                        pDialog.setMax(1);
                        pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                        pDialog.setCancelable(false);
                        pDialog.setCanceledOnTouchOutside(false);
                        pDialog.show();
                        return pDialog;
                case progress_bar_type_send_mail: // progress bar for SMS
                        pDialog = new ProgressDialog(this);
                        pDialog.setMessage("Spedizione Mail in corso");
                        pDialog.setIndeterminate(false);
                        pDialog.setMax(1);
                        pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                        pDialog.setCancelable(false);
                        pDialog.setCanceledOnTouchOutside(false);
                        pDialog.show();
                        return pDialog;
                case progress_bar_type_load_rosa:
                        pDialog = new ProgressDialog(this);
                        pDialog.setMessage("Caricamento dati in corso. Attendere...");
                        pDialog.setIndeterminate(false);
                        pDialog.setMax(100);
                        pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                        pDialog.setCancelable(false);
                        pDialog.setCanceledOnTouchOutside(false);
                        pDialog.show();
                        return pDialog;
                default:
                        return null;
                }
        }

        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent intent) {
                super.onActivityResult(requestCode, resultCode, intent);

                switch (resultCode) {
                case RESULT_OK:
                        switch (requestCode) {
                        case 1:

                                if (sms.isChecked()) {

                                        Cursor phones = getContentResolver().query(
                                                        ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                                                        null, null, null, null);

                                        if (phones != null) {

                                                phones.moveToNext();

                                                number = phones.getString(phones
                                                                .getColumnIndex(Phone.NUMBER));

                                                if (number == "") {

                                                        Toast.makeText(
                                                                        getApplicationContext(),
                                                                        "Numero non presente. L'sms non verrà inviato",
                                                                        Toast.LENGTH_LONG).show();

                                                }
                                                phones.close();
                                        }

                                }

                                if (mail.isChecked()) {

                                        Cursor cmail = getContentResolver().query(
                                                        ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                                                        null, null, null, null);

                                        if (cmail != null) {

                                                cmail.moveToNext();

                                                mail_address = cmail.getString(cmail
                                                                .getColumnIndex(Email.DATA1));

                                        }
                                        cmail.close();

                                }

                                new send_formazione().execute();

                        }
                }

        }

        private class send_formazione extends AsyncTask<Void, Integer, Integer> {

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

                @Override
                protected Integer doInBackground(Void... Void) {

                        // Boolean deleted = del_ultima_form.del_ultima_formazione(
                        // Integer.valueOf(Myappdata.get_id_current_game()),
                        // Integer.valueOf(Myappdata.get_id_team()));

                        Boolean deleted = true;

                        if (deleted == true) {

                                text_message_t = text_message_p1 = text_message_p2 = "";

                                for (int i = 0; i < formazione.size(); i++) {

                                        row_formazione = Myappdata.get_row_id(i);

                                        // Boolean inserted = send_formazione.send_formazione(
                                        // row_formazione, i);

                                        Boolean inserted = true;

                                        if (inserted == true) {

                                                if (row_formazione.get_stato() == "C") {

                                                        if (text_message_t.isEmpty()) {

                                                                text_message_t = row_formazione
                                                                                .get_calciatore();
                                                        } else {
                                                                text_message_t = text_message_t + "-"
                                                                                + row_formazione.get_calciatore();
                                                        }
                                                } else if (row_formazione.get_stato() == "P") {

                                                        if (text_message_p1.isEmpty()) {

                                                                text_message_p1 = row_formazione
                                                                                .get_calciatore();
                                                        } else {
                                                                text_message_p1 = text_message_p1 + "-"
                                                                                + row_formazione.get_calciatore();
                                                        }

                                                } else if (row_formazione.get_stato() == "P2") {

                                                        if (text_message_p2.isEmpty()) {

                                                                text_message_p2 = row_formazione
                                                                                .get_calciatore();
                                                        } else {
                                                                text_message_p2 = text_message_p2 + "-"
                                                                                + row_formazione.get_calciatore();

                                                        }
                                                }

                                                progress = i + (i * 4);
                                                publishProgress(progress);

                                        } else {

                                                if (isCancelled()) {

                                                        break;

                                                }
                                                this.cancel(true);
                                                return 4;

                                        }
                                        try {

                                                Thread.sleep(3000);

                                        } catch (InterruptedException e) {

                                                this.cancel(true);
                                                return 4;

                                        }

                                }
                                return 0;
                        } else {

                                this.cancel(true);
                                return 4;

                        }
                }

                @Override
                protected void onProgressUpdate(Integer... progress) {
                        pDialog.setProgress(progress[0]);
                }

                @Override
                protected void onCancelled() {
                }

                @Override
                protected void onPostExecute(Integer result) {
                        // TODO Auto-generated method stub

                        if (result == 0) {
                                dismissDialog(progress_bar_type);
                                removeDialog(progress_bar_type);

                                Toast.makeText(getApplicationContext(), "Formazione Caricata",
                                                Toast.LENGTH_SHORT).show();

                                mydb.open();
                                mydb.updatedforminserted(1, 1);
                                mydb.close();

                                if (sms.isChecked()) {
                                        if (number.isEmpty() == true) {
                                                Toast.makeText(getApplicationContext(),
                                                                "Numero non rilevato dalla rubrica",
                                                                Toast.LENGTH_LONG).show();

                                        } else {

                                                Toast.makeText(getApplicationContext(),
                                                                "Numero: " + number, Toast.LENGTH_LONG).show();

                                                text_message = text_message_t + "/" + text_message_p1
                                                                + "/" + text_message_p2;
                                                sendSMS(number, text_message);

                                        }
                                }

                        } else {
                                dismissDialog(progress_bar_type);
                                Toast.makeText(getApplicationContext(),
                                                "Formazione non caricata. Riprovare",
                                                Toast.LENGTH_SHORT).show();

                        }

                        Load_insert_formazione.this.finish();

                }

        }

        private void sendSMS(String phoneNumber, String message) {
                showDialog(progress_bar_type_send_sms);
                PendingIntent pi = PendingIntent.getActivity(getApplicationContext(),
                                0, new Intent(this, Load_insert_formazione.class), 0);

                SmsManager sms = SmsManager.getDefault();
                sms.sendTextMessage(phoneNumber, null, message, pi, null);

                pDialog.setProgress(1);
                dismissDialog(progress_bar_type_send_sms);
        }

        private class load_rosa extends AsyncTask<Void, Integer, Integer> {

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

                @Override
                protected Integer doInBackground(Void... Void) {
                        ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
                        postParameters.add(new BasicNameValuePair("id_team", id_squadra));

                        try {
                                HttpClient httpclient = new DefaultHttpClient();
                                HttpPost httppost = new HttpPost(url_read_class);
                                httppost.setEntity(new UrlEncodedFormEntity(postParameters));
                                HttpResponse response = httpclient.execute(httppost);
                                HttpEntity entity = response.getEntity();
                                is = entity.getContent();

                                // convert response to string
                                try {
                                        BufferedReader reader = new BufferedReader(
                                                        new InputStreamReader(is, "utf-8"), 8);
                                        StringBuilder sb = new StringBuilder();
                                        String line = null;
                                        while ((line = reader.readLine()) != null) {
                                                sb.append(line + "\n");
                                        }
                                        is.close();

                                        result = sb.toString();

                                        try {
                                                tot_out = 0;
                                                Myappdata.clear_formazione();
                                                JSONArray jArray = new JSONArray(result);
                                                for (int i = 0; i < jArray.length(); i++) {
                                                        JSONObject json_data = jArray.getJSONObject(i);

                                                        Load_insert_formazione_class ins_for = new Load_insert_formazione_class(
                                                                        Integer.toString(i),
                                                                        json_data.getString("Ruolo"),
                                                                        json_data.getString("Nome_calciatore"), "T");
                                                        formazione.add(ins_for);
                                                        Myappdata.add_formazione(i, ins_for);
                                                        tot_out = tot_out + 1;
                                                        Myappdata.set_tot_out(tot_out);

                                                        progress = i + (i * 4);
                                                        publishProgress(progress);

                                                }

                                                tot_t = 0;
                                                tot_p1 = 0;
                                                tot_p2 = 0;
                                                Myappdata.set_tot_t(tot_t);
                                                Myappdata.set_tot_p1(tot_p1);
                                                Myappdata.set_tot_p2(tot_p2);
                                                return 0;

                                        } catch (JSONException e) {
                                                this.cancel(true);
                                                return 4;
                                        }

                                } catch (Exception e) {
                                        this.cancel(true);
                                        return 4;

                                }
                        } catch (Exception e) {
                                this.cancel(true);
                                return 4;

                        }
                }

                @Override
                protected void onProgressUpdate(Integer... progress) {
                        pDialog.setProgress(progress[0]);

                }

                protected void onPostExecute(Integer result) {
                        // TODO Auto-generated method stub

                        if (result == 0) {
                                runOnUiThread(new Runnable() {
                                        public void run() {

                                                dismissDialog(progress_bar_type_load_rosa);
                                                listview.setAdapter(adapter);
                                                adapter.setNotifyOnChange(true);

                                        }
                                });
                        } else if (result == 4) {
                                dismissDialog(progress_bar_type_load_rosa);
                                Toast.makeText(getApplicationContext(),
                                                "Errore di rete, riprovare", Toast.LENGTH_LONG).show();
                                Load_insert_formazione.this.finish();

                        }

                }
        }
}
« Ultima modifica: 18 Ottobre 2012, 10:27:21 CEST da schumy79 »

Offline schumy79

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2 - GT-I9100
  • Sistema operativo:
    Win7 X64
Re:Activity non si chiude ma avviene un reload.
« Risposta #1 il: 22 Ottobre 2012, 11:37:14 CEST »
0
Aggiungo LogCat e chiamata all'intent. come si può vedere dal logcat il OnDestroy viene richiamato, ma non riesco a capire perchè riparte l'activity.
Help please... non so come uscirne
Grazie.

Edit: il problema a quanto pare si presenta solo quando accedo alla rubrica per fare il pick del numero... altrimenti se non accedo alla rubrica l'activity si chiude correttamente.

Codice (Java): [Seleziona]
        public void insert_formazione(View view) {
                Intent intent = new Intent(this, Load_insert_formazione.class);
                startActivity(intent);
        }

LogCat

Codice: [Seleziona]
10-22 09:20:27.999: I/System.out(750): Sending WAIT chunk
10-22 09:20:28.099: I/dalvikvm(750): Debugger is active
10-22 09:20:28.219: I/System.out(750): Debugger has connected
10-22 09:20:28.219: I/System.out(750): waiting for debugger to settle...
10-22 09:20:28.430: I/System.out(750): waiting for debugger to settle...
10-22 09:20:28.635: I/System.out(750): waiting for debugger to settle...
10-22 09:20:28.840: I/System.out(750): waiting for debugger to settle...
10-22 09:20:29.040: I/System.out(750): waiting for debugger to settle...
10-22 09:20:29.240: I/System.out(750): waiting for debugger to settle...
10-22 09:20:29.448: I/System.out(750): waiting for debugger to settle...
10-22 09:20:29.649: I/System.out(750): waiting for debugger to settle...
10-22 09:20:29.851: I/System.out(750): waiting for debugger to settle...
10-22 09:20:30.052: I/System.out(750): waiting for debugger to settle...
10-22 09:20:30.249: I/System.out(750): waiting for debugger to settle...
10-22 09:20:30.459: I/System.out(750): waiting for debugger to settle...
10-22 09:20:30.660: I/System.out(750): waiting for debugger to settle...
10-22 09:20:30.887: I/System.out(750): waiting for debugger to settle...
10-22 09:20:31.097: I/System.out(750): waiting for debugger to settle...
10-22 09:20:31.299: I/System.out(750): waiting for debugger to settle...
10-22 09:20:31.527: I/System.out(750): waiting for debugger to settle...
10-22 09:20:31.779: I/System.out(750): debugger has settled (1371)
10-22 09:20:41.399: D/dalvikvm(750): GC_EXTERNAL_ALLOC freed 128K, 50% free 2782K/5511K, external 2075K/2137K, paused 100ms
10-22 09:20:47.374: D/dalvikvm(750): GC_EXTERNAL_ALLOC freed 199K, 53% free 2599K/5511K, external 2581K/2662K, paused 127ms
10-22 09:25:24.349: I/ActivityDemo(750): Richiamato onResume()
10-22 09:26:41.225: I/ActivityDemo(750): Richiamato onRestart()
10-22 09:26:44.369: I/ActivityDemo(750): Richiamato onResume()
10-22 09:28:14.046: I/ActivityDemo(750): Richiamato onResume()
10-22 09:28:37.159: I/ActivityDemo(750): Richiamato onDestroy()
10-22 09:28:51.239: D/dalvikvm(750): GC_CONCURRENT freed 488K, 47% free 3568K/6663K, external 3118K/3294K, paused 9ms+12ms
« Ultima modifica: 22 Ottobre 2012, 12:14:49 CEST da schumy79 »