2010-06-19 3 views
1

J'utilise le code suivant pour prendre des valeurs de la zone de texte. Mais cela ne fonctionne pas il donne l'exception et la force de fermer seulement. Comment obtenir la valeur de la zone de texte? Quelqu'un peut-il m'aider?comment gettext d'edittext dans android?

public class alertwithlogin extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    showDialog(1); 
} 
@Override 
protected Dialog onCreateDialog(int id) { 
    LayoutInflater factory = LayoutInflater.from(this); 
    final View textEntryView = factory.inflate(R.layout.alertedit, null); 
    return new AlertDialog.Builder(alertwithlogin.this)    
     .setTitle(R.string.alert_dialog_text_entry) 
     .setView(textEntryView) 
     .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       EditText edittext = (EditText) findViewById(R.id.username_edit); 
       Toast.makeText(getApplicationContext(),edittext.getText(),  Toast.LENGTH_SHORT).show(); 

      } 
     }) 
     .setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) {      
      } 
     }) 
     .create();  
} 

}

alertedit.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical"> 
<TextView 
    android:id="@+id/username_view" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:layout_marginLeft="20dip" 
    android:layout_marginRight="20dip" 
    android:text="@string/alert_dialog_username" 
    android:gravity="left" 
    android:textAppearance="?android:attr/textAppearanceMedium" />    
<EditText 
    android:id="@+id/username_edit" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:layout_marginLeft="20dip" 
    android:layout_marginRight="20dip" 
    android:scrollHorizontally="true" 
    android:autoText="false" 
    android:capitalize="none" 
    android:gravity="fill_horizontal" 
    android:textAppearance="?android:attr/textAppearanceMedium" />   
</LinearLayout> 
+2

Pouvez-vous vérifier la sortie logcat et voir quelle est l'exception réelle? – alun

Répondre

4

Votre appel à findViewById renvoie null, parce qu'il est invoqué sur votre activité et que la mise en page ne contient pas d'élément avec cet ID. Puisque vous ne vérifiez pas si edittext est null, l'appel à getText() force se ferme.

Si vous remplacez:

EditText edittext = (EditText) findViewById(R.id.username_edit); 

par:

EditText edittext = (EditText) textEntryView.findViewById(R.id.username_edit); 

Vous recherchez dans les textEntryView (que vous avez utilisé pour créer la boîte de dialogue), et cela fonctionne.