Autore Topic: EditText a completamento obbligatorio  (Letto 1171 volte)

Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
EditText a completamento obbligatorio
« il: 12 Maggio 2011, 23:21:41 CEST »
0
Ciao a tutti!
Ho un piccolo grande problema: ho creato un activity che ha un campo di testo e un pulsante ok;
Se l'utente ha scritto qualcosa nell' EditText allora premendo ok si va avanti, mentre se non è stato inserito nulla viene mostrato un Toast di avviso.
Il mio codice è questo:
Codice: [Seleziona]
public class AddNewEvent extends Activity {
        private AppDB db;

        // name
        EditText et_name;
        String name;

        Button bu_ok;

        public void onCreate(Bundle savedInstanceState) {

                // name
                et_name = (EditText) findViewById(R.id.et_nevent_Name);
               
                bu_ok = (Button) findViewById(R.id.bu_nevent_ok);

                super.onCreate(savedInstanceState);
                setContentView(R.layout.addnew_event);

                bu_ok.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View v) {
                                name = et_name.getText().toString();
                                if (name != null) {
                                        db.open();
                                        db.insertEvent(name);
                                        db.close();
                                        Intent myIntent = new Intent(v.getContext(), Events.class);
                                        startActivityForResult(myIntent, 0);
                                } else {
                                        Toast.makeText(getApplicationContext(),
                                                        "Insert the name of event", Toast.LENGTH_LONG)
                                                        .show();
                                }

                        }
                });
        }

}

Ora mi da questo errore quando vado ad aprire l'acivity:
[code]E/AndroidRuntime( 1151): java.lang.RuntimeException: Unable to start activity ComponentInfo{it.unipd.dei.es1011.droidgrill/it.unipd.dei.es1011.droidgrill.AddNewEvent}: java.lang.NullPointerException
E/AndroidRuntime( 1151):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
E/AndroidRuntime( 1151):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
E/AndroidRuntime( 1151):         at android.app.ActivityThread.access$2300(ActivityThread.java:125)
E/AndroidRuntime( 1151):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
E/AndroidRuntime( 1151):         at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 1151):         at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 1151):         at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime( 1151):         at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 1151):         at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime( 1151):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime( 1151):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime( 1151):         at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 1151): Caused by: java.lang.NullPointerException
E/AndroidRuntime( 1151):         at it.unipd.dei.es1011.droidgrill.AddNewEvent.onCreate(AddNewEvent.java:55)
E/AndroidRuntime( 1151):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime( 1151):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
E/AndroidRuntime( 1151):         ... 11 more

[/code]

La mia riga 55 è questa: 
Codice: [Seleziona]
bu_ok.setOnClickListener(new View.OnClickListener() {
 Come posso riuscire a fare quello che desidero? EditText non ha un metodo che mi dice se è stato inserito o meno qualcosa dall'utente... :-X

Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
Re:EditText a completamento obbligatorio
« Risposta #1 il: 13 Maggio 2011, 00:13:15 CEST »
0
Ho risolto, il problema è che chiamavo findById fuori dal metodo dove usavo la risorsa, solo che non capisco... non basta che sia dentro all' onCreate? Lascio il codice:
Codice: [Seleziona]
package it.unipd.dei.es1011.droidgrill;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;

public class AddNewEvent extends Activity {
        private AppDB db;

        // name
        EditText et_name;

        // coordinates
        EditText et_coo;
        Button bu_cooByMap;
        Button bu_cooHere;
        double lat = 0;
        double lon = 0;

        // photo
        ImageButton ib_photo;
        Button bu_takePhoto;
        DatePicker dp_date;

        Button bu_import;
        Button bu_ok;

        public void onCreate(Bundle savedInstanceState) {

                // name
                //et_name = (EditText) findViewById(R.id.et_nevent_Name);

                // coordinates
                et_coo = (EditText) findViewById(R.id.tv_nevent_Coo);
                bu_cooByMap = (Button) findViewById(R.id.bu_nevent_CooByMap);
                bu_cooHere = (Button) findViewById(R.id.bu_nevent_CooHere);

                // photo
                ib_photo = (ImageButton) findViewById(R.id.ib_nevent_photo);
                bu_takePhoto = (Button) findViewById(R.id.bu_nevent_TakePoto);
                dp_date = (DatePicker) findViewById(R.id.dp_nevent);

                bu_import = (Button) findViewById(R.id.bu_nevent_Import);

                super.onCreate(savedInstanceState);
                setContentView(R.layout.addnew_event);

                bu_ok = (Button) findViewById(R.id.bu_nevent_ok);
                bu_ok.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View v) {
                                et_name = (EditText) findViewById(R.id.et_nevent_Name);
                                String name = et_name.getText().toString();
                                if (name.equals("")) {
                                        db.open();
                                        db.insertEvent(name);
                                        db.close();
                                        Intent myIntent = new Intent(v.getContext(), Events.class);
                                        startActivityForResult(myIntent, 0);
                                } else {
                                        Toast.makeText(getApplicationContext(),
                                                        "Insert the name of event", Toast.LENGTH_LONG)
                                                        .show();
                                }
                        }
                });
        }

}

Questa chiamata
Codice: [Seleziona]
et_name = (EditText) findViewById(R.id.et_nevent_Name);mi portava a un errore, anche se la portavo appena prima del setOnClickListener...
ma COME È POSSIBILE..?  o_O o_O o_O

Offline cadupper

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • cadupper
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic Tim (32A)
  • Play Store ID:
    cadupper
  • Sistema operativo:
    Ubuntu 10.04
Re:EditText a completamento obbligatorio
« Risposta #2 il: 13 Maggio 2011, 00:29:56 CEST »
0
Comunque non mi funziona, crede che il campo sia sempre vuoto e di conseguenza salta sempre all else... :-(

Offline Gigiuz

  • Utente normale
  • ***
  • Post: 187
  • Respect: +23
    • Google+
    • gigiuzzo81
    • Gigiuz81
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Note III
  • Play Store ID:
    GGXSoft
  • Sistema operativo:
    Windows 7 64bit, OS X (virtualized), Ubuntu
Re:EditText a completamento obbligatorio
« Risposta #3 il: 13 Maggio 2011, 05:45:49 CEST »
0
Guarda la mia firma :)

Poi
Codice (Java): [Seleziona]
name = et_name.getText().toString();
if (name != null) {
          db.open();
          db.insertEvent(name);

Ma con questo intendi controllare se 'name' è una stringa vuota? Perché se è così dovresti scrivere

Codice (Java): [Seleziona]
name = et_name.getText().toString();
if (!name.equals("")) {
          db.open();
          db.insertEvent(name);
Hai bisogno di implementare un sistema di "codici seriali di sblocco" nella tua applicazione? Dai un'occhiata alla mia libreria: RemoteUnlocker

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:EditText a completamento obbligatorio
« Risposta #4 il: 13 Maggio 2011, 15:10:56 CEST »
0
cadupper,hai aperto TRE post con tutti e TRE la stessa richiesta e lo stesso errore! hai capito cosa sbagli o ancora no?????
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia