2012-07-15 57 views
0

我有以下代碼。無法從edittext中獲得價值

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

       chatbox=(EditText)findViewById(R.id.Chatbox); <-- error 
       String data=chatbox.getText().toString(); 
       Log.i("chama",data); 

       HashMap<String,String> hashMap=new HashMap<String,String>();  
         hashMap.put("You",chatbox.getText().toString()); //insert username(You) value in chatbox to hashmap 

         adminChat.add(hashMap);         //insert hashMap in arraylist 
         ShowListView(adminChat);       //pass it to listview 

         sendHttpRequest("set", "admin", "You" ,chatbox.getText().toString(),clientEmail,UserAdminChatActivity.LastShowingChatDate);     

     }}); 

它是在這樣

<EditText 
    android:id="@+id/Chatbox" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@id/SubmitButton" 
    android:layout_alignBottom="@id/SubmitButton" 
    android:layout_alignParentLeft="true" 
    android:layout_toLeftOf="@id/SubmitButton" 
    android:ems="10" 
    android:inputType="text" > 
</EditText> 

的logcat中的XML聲明提供了以下錯誤:

07-15 17:40:20.083: E/AndroidRuntime(5503): FATAL EXCEPTION: main 
07-15 17:40:20.083: E/AndroidRuntime(5503): java.lang.NullPointerException 
07-15 17:40:20.083: E/AndroidRuntime(5503):  at com.app.ServerClient.UserAdminChatActivity$2.onClick(UserAdminChatActivity.java:52) 
07-15 17:40:20.083: E/AndroidRuntime(5503):  at android.view.View.performClick(View.java:2485) 
07-15 17:40:20.083: E/AndroidRuntime(5503):  at android.view.View$PerformClick.run(View.java:9080) 
07-15 17:40:20.083: E/AndroidRuntime(5503):  at android.os.Handler.handleCallback(Handler.java:587) 
07-15 17:40:20.083: E/AndroidRuntime(5503):  at android.os.Handler.dispatchMessage(Handler.java:92) 
07-15 17:40:20.083: E/AndroidRuntime(5503):  at android.os.Looper.loop(Looper.java:123) 
07-15 17:40:20.083: E/AndroidRuntime(5503):  at android.app.ActivityThread.main(ActivityThread.java:3647) 
07-15 17:40:20.083: E/AndroidRuntime(5503):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-15 17:40:20.083: E/AndroidRuntime(5503):  at java.lang.reflect.Method.invoke(Method.java:507) 
07-15 17:40:20.083: E/AndroidRuntime(5503):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
07-15 17:40:20.083: E/AndroidRuntime(5503):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
07-15 17:40:20.083: E/AndroidRuntime(5503):  at dalvik.system.NativeStart.main(Native Method) 
+0

中的onClick會發生什麼()? – Egor 2012-07-15 12:45:51

+0

我粘貼了整個onclick()事件。 – Mj1992 2012-07-15 12:49:42

+1

你在調用'setContentView'後調用這段代碼? – 2012-07-15 12:54:56

回答

2

試試這個:

String data=""; 
chatbox=(EditText)findViewById(R.id.Chatbox); 
if(chatbox.getText().toString()!=null) 
    data=chatbox.getText().toString(); 

此外,確保您所指的EditText位於s中您正在使用與您的活動映射AME XML文件通過setContentView()

+0

它仍然不能正常工作 – Mj1992 2012-07-15 12:47:51

+0

檢查編輯。 – 2012-07-15 12:49:18

+0

是的,它是在同一個xml文件 – Mj1992 2012-07-15 12:50:52

1

你應該做onClick方法的這種

chatbox= (EditText) findViewById(R.id.Chatbox); 

之外。這對我來說沒有任何意義。在您設置contentView後,您的widget應立即初始化。

所以

... 
protected EditText chatbox; 

@Override 
public void onCreate(Bundle savedOnInstanceState) { 
    super.onCreate(savedOnInstanceState); 
    setContentView(R.layout.main); 
    chatbox = (EditText) findViewById(R.id.Chatbox); 
    ... 
    chatbox.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
     String data=chatbox.getText().toString(); 
     ... 
     } 
    }); 
}