Android addTextChangedListener()的空指针异常
我正在尝试遵循android开发教程,当我尝试运行代码时,它会给我一个Android addTextChangedListener()的空指针异常,android,eclipse,Android,Eclipse,我正在尝试遵循android开发教程,当我尝试运行代码时,它会给我一个nullpointerexception。任何帮助都将不胜感激。这是密码 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_crazy_tip_calc); if (savedInstanceState ==
nullpointerexception
。任何帮助都将不胜感激。这是密码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_crazy_tip_calc);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
billBeforeTip = 0.0;
tipAmount = .15;
finalBill = 0.0;
} else {
billBeforeTip = savedInstanceState.getDouble(BILL_WITHOUT_TIP);
tipAmount = savedInstanceState.getDouble(CURRENT_TIP);
finalBill = savedInstanceState.getDouble(TOTAL_BILL);
}
billBeforeTipET = (EditText) findViewById(R.id.billEditText);
tipAmountET = (EditText) findViewById(R.id.tipEditText);
finalBillET = (EditText) findViewById(R.id.finalBillEditText);
billBeforeTipET.addTextChangedListener(billBeforeTipListener);
}
private TextWatcher billBeforeTipListener = new TextWatcher() {
@Override
public void afterTextChanged(Editable arg0) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
try{
billBeforeTip = Double.parseDouble(s.toString());
} catch(NumberFormatException e){
billBeforeTip = 0.0;
}
updateTipAndFinalBill();
}
};
我已经将问题缩小到包含addTextChangedListener(
)的行,但不知道如何解决它
这是日志
05-01 07:00:23.450: E/AndroidRuntime(2052): FATAL EXCEPTION: main
05-01 07:00:23.450: E/AndroidRuntime(2052): Process: ie.ors.crazytipcalc, PID: 2052
05-01 07:00:23.450: E/AndroidRuntime(2052): java.lang.RuntimeException: Unable to start activity ComponentInfo{ie.ors.crazytipcalc/ie.ors.crazytipcalc.CrazyTipCalc}: java.lang.NullPointerException
05-01 07:00:23.450: E/AndroidRuntime(2052): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
05-01 07:00:23.450: E/AndroidRuntime(2052): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
05-01 07:00:23.450: E/AndroidRuntime(2052): at android.app.ActivityThread.access$800(ActivityThread.java:135)
05-01 07:00:23.450: E/AndroidRuntime(2052): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
05-01 07:00:23.450: E/AndroidRuntime(2052): at android.os.Handler.dispatchMessage(Handler.java:102)
05-01 07:00:23.450: E/AndroidRuntime(2052): at android.os.Looper.loop(Looper.java:136)
05-01 07:00:23.450: E/AndroidRuntime(2052): at android.app.ActivityThread.main(ActivityThread.java:5017)
05-01 07:00:23.450: E/AndroidRuntime(2052): at java.lang.reflect.Method.invokeNative(Native Method)
05-01 07:00:23.450: E/AndroidRuntime(2052): at java.lang.reflect.Method.invoke(Method.java:515)
05-01 07:00:23.450: E/AndroidRuntime(2052): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-01 07:00:23.450: E/AndroidRuntime(2052): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
05-01 07:00:23.450: E/AndroidRuntime(2052): at dalvik.system.NativeStart.main(Native Method)
05-01 07:00:23.450: E/AndroidRuntime(2052): Caused by: java.lang.NullPointerException
05-01 07:00:23.450: E/AndroidRuntime(2052): at ie.ors.crazytipcalc.CrazyTipCalc.onCreate(CrazyTipCalc.java:56)
05-01 07:00:23.450: E/AndroidRuntime(2052): at android.app.Activity.performCreate(Activity.java:5231)
05-01 07:00:23.450: E/AndroidRuntime(2052): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
05-01 07:00:23.450: E/AndroidRuntime(2052): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
05-01 07:00:23.450: E/AndroidRuntime(2052): ... 11 more
05-01 07:00:27.340: I/Process(2052): Sending signal. PID: 2052 SIG: 9
我的布局代码是
我对您的布局文件做了一些更改。。试试这个
<TextView
android:id="@+id/tipTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/billEditText"
android:layout_toRightOf="@id/billEditText"
android:text="@string/tip_text_view" />
<EditText
android:id="@+id/billEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/billTextView"
android:layout_alignBottom="@id/billTextView"
android:layout_toRightOf="@id/billTextView"
android:ems="5"
android:inputType="numberDecimal"
android:text="@string/bill_edit_text" />
<EditText
android:id="@+id/tipEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/tipTextView"
android:layout_alignBottom="@id/tipTextView"
android:layout_toRightOf="@id/tipTextView"
android:ems="4"
android:inputType="numberDecimal"
android:text="@string/tip_edit_text" />
<TextView
android:id="@+id/finalBillTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/tipEditText"
android:layout_below="@id/tipEditText"
android:layout_marginTop="17dp"
android:text="@string/final_text_view" />
<EditText
android:id="@+id/finalBillEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/finalBillTextView"
android:layout_below="@id/finalBillTextView"
android:ems="5"
android:inputType="numberDecimal"
android:text="@string/final_bill_edit_text" >
</EditText>
它崩溃,因为billBeforeTipET为null,因为findViewById在Activity onCreate()中未找到它
在这种情况下,请确保在Activity的setContentView中设置了包含id为billEditText的TextView的版面,而不是Fargment。确保您的版面中有一个带有
android:id=“@+id/billEditText
的视图。如果您没有设置,findViewById()
将返回null,您将在添加文本更改侦听器的行上获得NullPointerException。在CrazyTipCalc.java
中,第56行是什么?@SilentKiller第56行是billBeforeTipET.addTextChangedListener(billBeforeTipListener);@user3592544检查Karakuri给出的第一条评论。这可能是solution@Karakuri我为billetittext
<TextView
android:id="@+id/tipTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/billEditText"
android:layout_toRightOf="@id/billEditText"
android:text="@string/tip_text_view" />
<EditText
android:id="@+id/billEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/billTextView"
android:layout_alignBottom="@id/billTextView"
android:layout_toRightOf="@id/billTextView"
android:ems="5"
android:inputType="numberDecimal"
android:text="@string/bill_edit_text" />
<EditText
android:id="@+id/tipEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/tipTextView"
android:layout_alignBottom="@id/tipTextView"
android:layout_toRightOf="@id/tipTextView"
android:ems="4"
android:inputType="numberDecimal"
android:text="@string/tip_edit_text" />
<TextView
android:id="@+id/finalBillTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/tipEditText"
android:layout_below="@id/tipEditText"
android:layout_marginTop="17dp"
android:text="@string/final_text_view" />
<EditText
android:id="@+id/finalBillEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/finalBillTextView"
android:layout_below="@id/finalBillTextView"
android:ems="5"
android:inputType="numberDecimal"
android:text="@string/final_bill_edit_text" >
</EditText>