[英]Android EditText gives nullpointer
嘗試運行應用程序時出現錯誤。 我希望有人能指出我正確的方向
這是我的問題開始的地方(第73行):
USER_ID_TMP = userIdtext2.getText().toString();
較長的代碼段:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab1);
Log.i("tabs", "CurrentTab is: 1");
DB_NAME_AND_PATH = Tab1.this.getDatabasePath(DB_NAME);
Log.d("Haze", "DB_NAME_AND_PATH: "+DB_NAME_AND_PATH);
listView = (ListView) findViewById(R.id.listViewer);
Button copyDbButton = (Button)findViewById(R.id.copydbbutton);
Button readDbButton = (Button)findViewById(R.id.readdbbutton);
final EditText userIdtext= (EditText) findViewById(R.id.userIDtextBox);
EditText userIdtext2= (EditText) findViewById(R.id.userIDtextBox);
if(fileFound){
Log.d("Haze", "Filefound...........");
readDbButton.setEnabled(false);
}else{
Log.d("Haze", "FileNotfound...........");
fileFound = checkFileOnCreate(DB_NAME_AND_PATH);
readDbButton.setEnabled(true);
}
USER_ID_TMP = userIdtext2.getText().toString();
Log.d("Haze", "USER_ID_TMP: "+USER_ID_TMP);
USER_ID = USER_ID_TMP.toUpperCase();
final TextWatcher watcher= new TextWatcher() {
public void afterTextChanged(Editable s) {
if (userIdtext.getText().toString().equals("")) {
userIdtext.setBackgroundColor(getResources().getColor(android.R.color.white));
userIdtext.setTextColor(getResources().getColor(android.R.color.black));
}
錯誤信息:
05-13 03:43:08.778 2079-2079/com.androidexample.tabbar D/Haze﹕ FileNotfound...........
05-13 03:43:08.800 2079-2079/com.androidexample.tabbar D/AndroidRuntime﹕ Shutting down VM
05-13 03:43:08.800 2079-2079/com.androidexample.tabbar W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x409961f8)
05-13 03:43:08.828 2079-2079/com.androidexample.tabbar E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.androidexample.tabbar/com.androidexample.tabbar.TabBar}: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.androidexample.tabbar/com.androidexample.tabbar.Tab1}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
at android.app.ActivityThread.access$600(ActivityThread.java:122)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4340)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.androidexample.tabbar/com.androidexample.tabbar.Tab1}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
at android.app.ActivityThread.startActivityNow(ActivityThread.java:1796)
at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:682)
at android.widget.TabHost.setCurrentTab(TabHost.java:346)
at android.widget.TabHost.addTab(TabHost.java:236)
at com.androidexample.tabbar.TabBar.onCreate(TabBar.java:43)
at android.app.Activity.performCreate(Activity.java:4465)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
at android.app.ActivityThread.access$600(ActivityThread.java:122)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4340)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.androidexample.tabbar.Tab1.onCreate(Tab1.java:73)
at android.app.Activity.performCreate(Activity.java:4465)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
at android.app.ActivityThread.startActivityNow(ActivityThread.java:1796)
at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:682)
at android.widget.TabHost.setCurrentTab(TabHost.java:346)
at android.widget.TabHost.addTab(TabHost.java:236)
at com.androidexample.tabbar.TabBar.onCreate(TabBar.java:43)
at android.app.Activity.performCreate(Activity.java:4465)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
at android.app.ActivityThread.access$600(ActivityThread.java:122)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4340)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
您已經使用tab1布局通過使用setContentView(R.layout.tab1)來設置視圖;
然后在此行中使用id userIDtextBox來初始化userIdtext2。EditText userIdtext2 =(EditText)findViewById(R.id.userIDtextBox);
然后,通過以下代碼獲取userIdtext2的值
USER_ID_TMP = userIdtext2.getText()。toString();
所以檢查id是否為R.id.userIDtextBox在布局R.layout.tab1中是否可用 ?
檢查您的userIdtext2.getText()是否為null。 如果不為null,則使用userIdtext2.getText()。toString()
因為已知在空對象上使用toString()會導致NPE
參考: 將空對象轉換為字符串
我想你的問題在這一行
USER_ID = USER_ID_TMP.toUpperCase();
因為user_id_temp
包含任何內容,所以當您嘗試將其轉換為大寫字母時,因為它不包含任何內容,這就是它引發exception
的原因。請嘗試使用一些初始輸入或對其進行注釋,然后嘗試。
更新您的EditText
ID(此處相同)
final EditText userIdtext= (EditText) findViewById(R.id.userIDtextBox1);
EditText userIdtext2= (EditText) findViewById(R.id.userIDtextBox2);
可能是USER_ID_TMP = userIdtext2.getText().toString();
行中的其他問題USER_ID_TMP = userIdtext2.getText().toString();
此處在getText();
找不到任何內容getText();
所以首先您必須setText("");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.