2011-11-14 33 views
0
public class screen2 extends Activity { 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 

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

      final Button button1 = (Button)findViewById(R.id.button1);   
      button1.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 

        //AInteger.parseInt(string) 
        System.out.println("1"); 
        EditText et = (EditText)findViewById(R.id.editText1); 
        System.out.println("2"); 
        int zipCode = Integer.parseInt(et.getText().toString()); 
        System.out.println("3"); 
        System.out.println(zipCode); 

        System.out.println("dude...5"); 
       } 
      }); 
     }   
    } 

這段代碼顯示在logcat中的errror:無法從的getText EDITTEXT

11-13 19:58:06.806: W/KeyCharacterMap(281): Using default keymap: /system/usr/keychars/qwerty.kcm.bin 
11-13 19:58:09.471: I/System.out(281): 1 
11-13 19:58:09.471: I/System.out(281): 2 
11-13 19:58:09.477: D/AndroidRuntime(281): Shutting down VM 
11-13 19:58:09.477: W/dalvikvm(281): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
11-13 19:58:09.527: E/AndroidRuntime(281): FATAL EXCEPTION: main 
11-13 19:58:09.527: E/AndroidRuntime(281): java.lang.NullPointerException 
11-13 19:58:09.527: E/AndroidRuntime(281): at com.example.andtwi.screen2$1.onClick(screen2.java:23) 
11-13 19:58:09.527: E/AndroidRuntime(281): at android.view.View.performClick(View.java:2408) 
11-13 19:58:09.527: E/AndroidRuntime(281): at android.view.View$PerformClick.run(View.java:8816) 
11-13 19:58:09.527: E/AndroidRuntime(281): at android.os.Handler.handleCallback(Handler.java:587) 
11-13 19:58:09.527: E/AndroidRuntime(281): at android.os.Handler.dispatchMessage(Handler.java:92) 
11-13 19:58:09.527: E/AndroidRuntime(281): at android.os.Looper.loop(Looper.java:123) 
11-13 19:58:09.527: E/AndroidRuntime(281): at android.app.ActivityThread.main(ActivityThread.java:4627) 
11-13 19:58:09.527: E/AndroidRuntime(281): at java.lang.reflect.Method.invokeNative(Native Method) 
11-13 19:58:09.527: E/AndroidRuntime(281): at java.lang.reflect.Method.invoke(Method.java:521) 
11-13 19:58:09.527: E/AndroidRuntime(281): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
11-13 19:58:09.527: E/AndroidRuntime(281): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
11-13 19:58:09.527: E/AndroidRuntime(281): at dalvik.system.NativeStart.main(Native Method) 

雖然它看起來像一個空指針異常,我覺得我做的事情也正是我在論壇上找到。這裏也是我的相關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/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Enter Zipcode" /> 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="number" 
     android:maxLength="5" > 

     <requestFocus /> 
    </EditText> 

    <Button 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/button1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Get movies from Flixster" /> 

</LinearLayout> 

碼處斷裂這個問題,以及:

int zipCode = Integer.parseInt(et.getText().toString()); 
+0

您是否驗證過et不爲null? – Macondo2Seattle

+0

不..我沒有那樣做過。我怎樣才能做到這一點。 – typedefcoder2

+0

使用調試器? – Macondo2Seattle

回答

0

你可以發佈你的onCreate方法,以及對自己的第23行?最可能的問題是您忽略撥打setContentView,這就是爲什麼findViewById返回空值。

+0

更新了代碼。請檢查... – typedefcoder2

+0

嘗試清理您的項目。在Eclipse中選擇項目 - >清潔 – Craigy

+0

它的工作..越來越多我在Eclipse上工作...越來越多我越來越沮喪..「乾淨的項目的東西+模擬器加載時間」..是它的方式谷歌要使Android領導 ? – typedefcoder2

1

試試這個:

Button button1 = (Button)findViewById(R.id.button1); 
EditText et = (EditText)findViewById(R.id.editText1); 

button1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 

       System.out.println("1");     
       System.out.println("2"); 
       String zipCode = et.getText().toString(); 
       System.out.println("3"); 
       System.out.println(zipCode); 
      } 
} 

我認爲,你不需要寫String zipCode = (String)et.getText().toString();存在,因爲它已經返回String對象。

希望您在聲明ButtonEditText之前不要錯過包括setContentView(R.layout.your_xml_file);

編輯1:

你似乎並沒有與

int zipCode=Integer.parseInt(et.getText().toString());與上面的代碼修改there.Try這讓問題。

您可能會收到空指針異常,因爲您的String s=et.getText().toString()爲空。請在將其轉換爲int之前檢查它是否爲null。按鈕button1 =(按鈕)findViewById(R.id.button1);按鈕button1 =(按鈕)findViewById(R.id.button1);按鈕button1 =(按鈕)findViewById(R.id.button1);
EditText et =(EditText)findViewById(R.id.editText1);

button1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 

       System.out.println("1");     
       System.out.println("2"); 
       String check = et.getText().toString(); 
       int zipCode=0; 
       if(!check.equals("")) 
        zipCode=Integer.parseInt(check); 
       System.out.println("3"); 
       System.out.println(zipCode); 
      } 
} 
+0

我正在做所有這些..仍然錯誤... :( – typedefcoder2

+0

請檢查編輯的code.If你會得到0打印,然後你的edittext本身變得空。 – Hiral