获取EditText值时出现空指针异常

时间:2012-01-08 03:56:53

标签: android android-edittext

我试图通过下面的代码获取EditText值。该活动用于添加两个字符串。在布局中,我已经放了onSave和onCancel方法。但是当我按下链接到onSave的按钮时,它会显示空指针异常错误。

的活动:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class AddTimeActivity extends Activity {

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.time_item);
}

public void onCancel(View view){
    this.setResult(RESULT_CANCELED);
    finish();
}

public void onSave(View view){
    Intent intent = getIntent();

    EditText timeView = (EditText)view.findViewById(R.id.time_view);
    String time = timeView.getText().toString();
    intent.putExtra(TimeTrackerActivity.TIME_KEY, time);

    EditText notesView = (EditText)view.findViewById(R.id.notes_view);
    String notes = notesView.getText().toString();
    intent.putExtra(TimeTrackerActivity.NOTES_KEY, notes);

    this.setResult(RESULT_OK, intent);

    finish();

}
}

布局:

...
<EditText
    android:id="@+id/timeView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
</EditText>

<EditText
    android:id="@+id/notes_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="textMultiLine" 
    android:gravity="top"
    android:layout_weight="1"
    android:layout_marginBottom="10dp"/>
...
<Button
        android:onClick="onSave"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Save" />

<Button
        android:onClick="onCancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Cancel" />
...

调试器的错误消息

E/AndroidRuntime(1123): Caused by: java.lang.NullPointerException
E/AndroidRuntime(1123): at com.timetracker.AddTimeActivity.onSave(AddTimeActivity.java:34)

我试图通过调试器检查timeView的值,它是null。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

您正在寻找ID time_view(findViewById(R.id.time_view)),但您在XML中声明了ID timeViewandroid:id="@+id/timeView")。使它们相同,它应该修复它。

此外,您不应该在视图上调用它,而是在活动上调用它,例如:

EditText timeView = (EditText)findViewById(R.id.time_view);

答案 1 :(得分:2)

你的xml有

 android:id="@+id/timeView" 

但你的代码有

  EditText timeView = (EditText)view.findViewById(R.id.time_view);

将上述行更改为。

   EditText timeView = (EditText)view.findViewById(R.id.timeView);