2012-06-05 4 views
0

je tentais d'apprendre en suivant le laboratoire ici https://sites.google.com/site/androidcoursearchive/labs/lab-1Obtenir "Force Close" avec mon premier HelloWorldLogin code android

Voici le code

NameGetter.java

public class NameGetter extends Activity implements OnClickListener { 

    EditText name; 
    Button submit; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.setContentView(R.layout.name_getter); 
     name = (EditText) this.findViewById(R.id.editText1); 
     submit = (Button) this.findViewById(R.id.button1); 
     submit.setOnClickListener(this); 
    } 

    public void onClick(View v) { 
     String userName = name.getText().toString(); 
     Intent submitIntent = new Intent(NameGetter.this, HelloWorld.class); 
     submitIntent.putExtra("username", userName); 
     this.startActivity(submitIntent); 
    } 
} 

HelloWorld .java

public class HelloWorld extends Activity { 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     TextView tv = (TextView) this.findViewById(R.id.textViewHello); 

     Bundle name = this.getIntent().getExtras(); 

     if(name != null) { 
      String nameEntered = name.getString("username"); 
      if(nameEntered != null) { 
       tv.setText(nameEntered); 
      } else { 
       tv.setText("nameEntered is null"); 
      } 
     } else { 
      tv.setText("name is null"); 
     } 
    } 
} 

Je peux saisir le texte dans la zone EditText, et lorsque j'appuie sur le bouton submit, j'obtiens une fermeture forcée. LogCat dit comme suit:

java.lang.RuntimeException: Impossible de démarrer l'activité ComposantInfo {com.mypackagerhello.com/com.mypackagerhello.com.HelloWorld}: java.lang.NullPointerException`

EDIT: Merci à tous! C'était la ligne this.setContentView(R.layout.main); qui manquait à HelloWorld.java.

+0

Avez-vous déclaré HelloWorld dans votre maanifest? – Shrikant

+0

où est setContentView (R.layout.); Bonjour le monde ?? –

+0

Je suppose que vous supposez que la même interface utilisateur est partagée entre deux activités, ce qui est faux. Deux activités utilisent leur propre interface utilisateur, vous devez donc appeler setContentView (R.layout.name_getter); dans HelloWorld Class juste après super.onCreate(). – Sudhaker

Répondre

1

Notez que dans votre activité NameGetter vous définissez l'affichage du contenu comme ceci:

this.setContentView(R.layout.name_getter); 

mais dans votre activité HelloWorld vous Je ne l'ai pas fait. Ajoutez cette ligne juste après super.onCreate et avant findViewById. Bonne chance!

+0

Génial! Je vous remercie. Ça marche! – devcoder

0

Insérer

setContentView(R.layout.<layout_id>); 

dans le HelloWorld avant

TextView tv = (TextView) this.findViewById(R.id.textViewHello); 
0

jsut Déclarez votre activité HelloWorld dans AndroidManifest.xml étiquette à l'intérieur aplication comme celui-ci

 <activity 
      android:name=".HelloWorld" 
      android:label="@string/app_name" > 
     </activity> 
+0

si c'est le cas, il va lancer ActivityNotFoundException pas NPE. –