我试图通过下面的代码获取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。
有人可以帮忙吗?
答案 0 :(得分:3)
您正在寻找ID time_view
(findViewById(R.id.time_view)),但您在XML中声明了ID timeView
(android: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);