2013-02-28 78 views
1

這是Android開發相關的問題。 我利用ADT和Eclipse靛藍的在Windows 7 64位在XML佈局文件中放置EditText時出現NullPointerException

首先,我們有XML佈局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <EditText 
    android:id="@+id/editText1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:ems="10" > 
    </EditText> 

</LinearLayout> 

其次,我們必須使正上方的XML文件的引用類

package com.example.test_table; 

import android.os.Bundle; 
import android.app.Activity; 

public class Home extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_home); 

    } 

} 

排在第三位,我們在類家庭的清單得到了聲明

<activity 
    android:name="com.example.test_table.Home" 
    android:label="@string/app_name" > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

然後,當我嘗試運行時,Eclipse返回一個nullpointerexception。 但是,當我從xml佈局文件中刪除EditText時,應用程序工作。 這個問題突然出現在我的電腦中,我試圖做一些事情。

的logcat:

02-27 22:42:39.051: E/AndroidRuntime(12164): FATAL EXCEPTION: main 
02-27 22:42:39.051: E/AndroidRuntime(12164): java.lang.RuntimeException: Unable to start activity ComponentInfo {com.example.test_table/com.example.test_table.Home}: java.lang.NullPointerException 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1970) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.app.ActivityThread.access$600(ActivityThread.java:128) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.os.Looper.loop(Looper.java:137) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.app.ActivityThread.main(ActivityThread.java:4514) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at java.lang.reflect.Method.invokeNative(Native Method) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at java.lang.reflect.Method.invoke(Method.java:511) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at dalvik.system.NativeStart.main(Native Method) 
02-27 22:42:39.051: E/AndroidRuntime(12164): Caused by: java.lang.NullPointerException 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.sec.clipboard.ClipboardExManager.updateData(ClipboardExManager.java:241) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.widget.EditText.onFocusChanged(EditText.java:134) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.view.View.handleFocusGainInternal(View.java:3727) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.view.View.requestFocus(View.java:5420) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.view.View.requestFocus(View.java:5370) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.view.View.requestFocus(View.java:5348) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.view.LayoutInflater.parseRequestFocus(LayoutInflater.java:753) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.view.LayoutInflater.rInflate(LayoutInflater.java:724) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.view.LayoutInflater.rInflate(LayoutInflater.java:742) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:273) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.app.Activity.setContentView(Activity.java:1835) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at com.example.test_table.Home.onCreate(Home.java:11) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.app.Activity.performCreate(Activity.java:4465) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1053) 
02-27 22:42:39.051: E/AndroidRuntime(12164): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934) 
02-27 22:42:39.051: E/AndroidRuntime(12164): ... 11 more 

所以,我想知道是什麼原因導致的ADT停止承認一個EditText?

+1

我會嘗試清理您的項目並重新構建。你的代碼是正確的。另外,如果可以,發佈LogCat。 – burmat 2013-02-28 02:13:47

+0

我試過了,但還是一樣。謝謝您的幫助。 – 2013-02-28 02:22:02

+0

This line:'02-27 22:42:39.051:E/AndroidRuntime(12164):at android.sec.clipboard.ClipboardExManager.updateData(ClipboardExManager.java:241)'很好奇。你是偶然在三星設備上測試還是你在使用模擬器? – burmat 2013-02-28 02:22:16

回答

3

什麼是奇怪,我是這樣的日誌:

02-27 22:42:39.051: E/AndroidRuntime(12164): at android.sec.clipboard.ClipboardExManager.updateData(ClipboardExManager.java:241) 

把到這一點谷歌搜索似乎拉約在三星設備的缺陷和軟鍵盤的效果。我假設這是你使用的,因爲它看起來不像任何非三星的結果出現。我會研究這個錯誤,並且可能會嘗試禁用應用程序第一次啓動時出現的鍵盤。這可能會阻止它在onCreate()中崩潰,直到您通過單擊它實際上關注EditText。把這樣的事情在onCreate()可以幫你出的是:

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

就像我說在我的意見,你的代碼是正確的。嘗試在模擬器或其他Android設備上進行測試。如果還有其他問題,我會盡力幫助你。

這裏有一些鏈接我脫脂通過:

+0

Thaks很多幫助。你真的很擅長回答問題。事實上,這是我的三星設備的錯。 – 2013-02-28 18:48:11

+0

我也學到了一些東西。我很高興你明白了。 – burmat 2013-02-28 18:49:33

0

嘗試使用編輯文本在你的java文件,並指它

EditText edt = (EditText) findViewById(path); 
相關問題