2011-12-31 13 views
1

私のAndroidプログラムに問題があります。 私はすべてのことを私が望むように働いていますが、今はパスワードダイアログを追加しようとしています。EditText.getText Java.lang nullpointer例外

私はEditText(パスワードを入力)と2つのボタン(ok、キャンセル)でダイアログを表示したいと思います。 (これまでの動作まで)

[OK]ボタンをクリックすると、パスワードはmij SendDataクラスに保存されます。

しかし、EditTextの内容を取得しようとするたびに、Java.lang NullPointerExceptionが返されます。

私は何か助けてもらえますか?

(私はどこそれを見つけることがわからないように私は、スタックトレースを持っていない:(私はアンドロイドのエミュレータ上でテストしていますので。)

もしそこにあなたが必要とする他の任意のものは、お気軽にどうぞ。お願いし

はここでここでXML-FILE

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <requestFocus /> 

    <EditText 
     android:id="@+id/txt_wachtwoord" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:inputType="textPassword" > 

     <requestFocus /> 
    </EditText> 

    <Button 
     android:id="@+id/DialogOK" 
     android:layout_width="100dp" 
     android:layout_height="wrap_content" 
     android:layout_alignRight="@+id/txt_wachtwoord" 
     android:layout_below="@+id/txt_wachtwoord" 
     android:layout_marginTop="22dp" 
     android:text="OK" /> 

    <Button 
     android:id="@+id/Cancel" 
     android:layout_width="100dp" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/DialogOK" 
     android:layout_alignBottom="@+id/DialogOK" 
     android:layout_toRightOf="@+id/DialogOK" 
     android:text="Cancel" /> 

</RelativeLayout> 

はコードがあるさ:

package SebApp.Phone.Remote; 

    import java.net.DatagramSocket; 

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

    public class PhoneRemote extends Activity { 

    private static final int VIBRATE_TIME = 100; 

    /** Called when the activity is first created. */ 
    public Vibrator vibrator = null; 
    public sendData sd = new sendData(); 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState);  
     setContentView(R.layout.main); 

     vibrator = (Vibrator)getSystemService(VIBRATOR_SERVICE);  

     //button to call the Dialog 
     Button ww = (Button) findViewById(R.id.ww); 

     //listener password button 
     ww.setOnClickListener(wwOnClickListener); 

    } 

    Button.OnClickListener wwOnClickListener = new Button.OnClickListener() {  

     public void onClick(View v) {   
      try{ 
       final EditText ww = (EditText) findViewById(R.id.txt_wachtwoord); 
       //set up dialog 
       Dialog dialog = new Dialog(PhoneRemote.this); 
       dialog.setContentView(R.layout.wachtwoord); 
       dialog.setTitle("This is my custom dialog box"); 
       dialog.setCancelable(true); 
       //there are a lot of settings, for dialog, cheout! 

       //set up button 
       Button button = (Button) dialog.findViewById(R.id.DialogOK); 
       button.setOnClickListener(new OnClickListener() { 
        public void onClick(View v) {     
         try{ 
          Toast.makeText(v.getContext(),"PWfield contains: " + ww.getText().toString(), Toast.LENGTH_SHORT).show(); 
          //finish(); 
         }catch(Exception e) 
         { 
          Toast.makeText(v.getContext(),e.toString(), Toast.LENGTH_SHORT).show(); 
         } 
        } 
       });   
       dialog.show(); 
      }catch(Exception E){ 
       Toast.makeText(v.getContext(),E.toString(), Toast.LENGTH_SHORT).show(); 
      } 

     } 
    }; 
} 

答えて

1
Button.OnClickListener wwOnClickListener = new Button.OnClickListener() {  

     public void onClick(View v) {   
      try{ 
       final EditText ww = (EditText) findViewById(R.id.txt_wachtwoord); 
       //set up dialog 
       Dialog dialog = new Dialog(PhoneRemote.this); 
       dialog.setContentView(R.layout.wachtwoord); 
       dialog.setTitle("This is my custom dialog box"); 
       dialog.setCancelable(true); 
.... 

代わりに使用

Button.OnClickListener wwOnClickListener = new Button.OnClickListener() {  

     public void onClick(View v) {   
      try{ 

       Dialog dialog = new Dialog(PhoneRemote.this); 
       dialog.setContentView(R.layout.wachtwoord); 
       final EditText ww = (EditText) dialog.findViewById(R.id.txt_wachtwoord); 
       //set up dialog 
       dialog.setTitle("This is my custom dialog box"); 
       dialog.setCancelable(true); 
.... 

あなたは完璧に動作

+0

はどうもありがとうございましダイアログビューを設定する前のEditTextを宣言していた:) – user1124313

0

私はまだトンを持っていますoコードを実行します。しかし、変数wwOnClickListenerがonCreateメソッドの前に初期化されているとします。

したがって、レイアウトはonCreateメソッド内で設定されるため、レイアウトは設定されません。この問題を解決するために、私はbuttonlistenerから次

final EditText ww = (EditText) findViewById(R.id.txt_wachtwoord); 

を引き出し、WWのonCreateメソッドで初期化されているグローバル変数になるだろう。

私は問題が解決すると期待します。

関連する問題