Oppure

Loading
11/03/12 19:27
Nullable
Ciao ragazzi, dopo aver risolto il problema dell'avvio di una mia applicazione sul cellulare ( pierotofy.it/pages/extras/forum/683/1036701-avviare_applicazione_scritta_in_java_su_cellulare_android/ ) ho riscontrato un problema che finora non sono riuscito a risolvere, nonostante abbia cercato su internet in lungo e in largo non sono riuscito a capire come risolvere. L'applicazione è banale : calcola il seno e il coseno di un angolo inserito dall'utente tramite un EditText. Il problema è che quando l'utente inserisce l'angolo l'applicazione calcola il seno/coseno ma se l'utente lascia vuoto il campo dell'EditText il messaggio che viene visualizzato ( e che porta alla chiusura dell'applicazione ) è il seguente : Sorry, the application My Project has stopped unexspectedly. Please try again.

Io non capisco il motivo...prima di calcolare il seno/coseno dell'angolo verifico che il campo dell'EditText non sia vuoto, se lo è mostra un messaggio dove dice all'utente di compilare il campo, altrimenti calcola il seno/coseno.

Vi lascio il sorgente :

package com.example.project;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class FirstAndroidProjectActivity extends Activity 
{
	double angolo, radiantiAngolo;
	EditText Inserisci;
	Button Coseno, Seno, Visualizza;
	TextView Risultato;
	AlertDialog alert;
	
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Coseno = (Button)findViewById(R.id.bCoseno);
        Seno = (Button)findViewById(R.id.bSeno);
        Visualizza = (Button)findViewById(R.id.bVisualizza);
        Inserisci = (EditText)findViewById(R.id.etInserisci);
        Risultato = (TextView)findViewById(R.id.tvRisultato);
        
        Coseno.setOnClickListener(new View.OnClickListener() 
        {	
			public void onClick(View v) 
			{
				angolo = Double.parseDouble(Inserisci.getText().toString());
				radiantiAngolo = Math.toRadians(angolo);
				if( Inserisci.getText().toString().equals("") )
				{
					alert = new AlertDialog.Builder(FirtAndroidProjectActivity.this).create();
					alert.setTitle("Errore campo");
					alert.setMessage("Campo vuoto, inserire un numero");
					alert.setCancelable(false);
					alert.setButton("OK", new DialogInterface.OnClickListener() 
					{
						public void onClick(DialogInterface dialog, int which) 
						{
							dialog.dismiss();
						}
					});
				} else Risultato.setText("Il coseno di " + Inserisci.getText().toString() + " è " + Math.round(Math.cos(radiantiAngolo)));
			}
		});
        
        Seno.setOnClickListener(new View.OnClickListener() 
        {
			public void onClick(View v) 
			{
				angolo = Double.parseDouble(Inserisci.getText().toString());
				radiantiAngolo = Math.toRadians(angolo);
				if( Inserisci.getText().toString().equals("") )
				{
					alert = new AlertDialog.Builder(FirtAndroidProjectActivity.this).create();
					alert.setTitle("Errore campo");
					alert.setMessage("Campo vuoto, inserire un numero");
					alert.setCancelable(false);
					alert.setButton("OK", new DialogInterface.OnClickListener() 
					{
						public void onClick(DialogInterface dialog, int which) 
						{
							dialog.dismiss();
						}
					});
					alert.show();
				} else Risultato.setText("Il seno di " + Inserisci.getText().toString() + " è " + Math.round(Math.sin(radiantiAngolo)));
			}
		});
        
        Visualizza.setOnClickListener(new View.OnClickListener() 
        {
			public void onClick(View v) 
			{
				alert = new AlertDialog.Builder(FirtAndroidProjectActivity.this).create();
				alert.setTitle("Creatore");
				alert.setMessage("Applicazione creata da Nullable per HTC Desire S");
				alert.setCancelable(false);
				alert.setButton("OK", new DialogInterface.OnClickListener() 
				{
					public void onClick(DialogInterface dialog, int which) 
					{
						dialog.dismiss();
					}
				});
				alert.show();
			}
		});
    }
}
Ultima modifica effettuata da Nullable 11/03/12 19:53
aaa
25/03/12 19:43
GrG
non me ne intendo molto, ma credo che l'errore sia nell'AlertDialog, sei davvero sicuro che quel codice ti mostri il messaggio?

Secondo me faresti bene a fare un nuovo progetto dove incollare quel codice e vedere se effettivamente funziona..
aaa
25/03/12 20:51
Nullable
Postato originariamente da GrG:

non me ne intendo molto, ma credo che l'errore sia nell'AlertDialog, sei davvero sicuro che quel codice ti mostri il messaggio?

Secondo me faresti bene a fare un nuovo progetto dove incollare quel codice e vedere se effettivamente funziona..


Il codice per mostare l'alert funziona, l'ho testato in un progetto a parte prima di scrivere il programma. E' come se la verifica (Inserisci.getText().toString().equals("";) ) non venisse considerata...eppure io so che in Java l'operatore "==" non si adopera quando si vuole mettere a confronto due stringhe, si usa .equals; non riesco a capire dove sia il problema...
aaa
25/03/12 21:07
GrG
si è giusto, si usa equals

Il tuo if credo sia giusto perchè la parte else viene eseguita, ma quando esegue il blocco if (quello dell'alert) si arresta, quindi sono piuttosto convinto che sia quell'alert che non va, prova a metterlo temporaneamente come commento e al posto di far vedere l'alert vai sul sicuro mettendoci qualcosa del tipo:

Risultato.setText("ok l'if funziona";);
aaa