我有一个名为AddItem
的活动,其中包含一些用户填写的字段,我现在正尝试将它们传递给另一个活动。通过这样做,我能够获得前两个字段:
String messageText = ((EditText) findViewById(R.id.inputName)).getText().toString();
String discriptionText = ((EditText) findViewById(R.id.description)).getText().toString();
上面的代码很有趣,但后来我尝试获得另一个值,然后我将其转换为双重代码:
double Latitude = Double.parseDouble(((EditText) findViewById(R.id.Latitude)).getText().toString());
这有点漫长而复杂,但除了解析String并将其转换为double值之外,我基本上都在做同样的事情。我确定这是问题代码,因为当我评论它时,应用程序的其余部分运行正常。
这是我的活动:
public class AddItem extends AppCompatActivity {
EditText inputedTask, inputedDescription, inputedLatitude;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_item);
inputedTask = (EditText) findViewById(R.id.inputName);
inputedDescription = (EditText) findViewById(R.id.description);
inputedLatitude = (EditText) findViewById(R.id.Latitude);
}
public void onSaveItemButton(View view) {
String messageText = ((EditText) findViewById(R.id.inputName)).getText().toString();
String discriptionText = ((EditText) findViewById(R.id.description)).getText().toString();
double Latitude = Double.parseDouble(((EditText) findViewById(R.id.Latitude)).getText().toString());
if (messageText.equals(""));
else {
Intent intent = new Intent();
intent.putExtra(Intent_Constant.INTENT_MESSAGE_FIELD, messageText);
setResult(Intent_Constant.INTENT_RESULT_CODE, intent);
finish();
}
}
}
答案 0 :(得分:4)
您需要从documentation:
为onClick创建一个公共方法在承载此布局的Activity中,使用以下方法 处理click事件:
/** Called when the user touches the button */ public void sendMessage(View view) { // Do something in response to button click }
您在android:onClick属性中声明的方法必须具有 签名完全如上所示。具体来说,该方法必须:
- 公开
- 返回无效
- 将视图定义为唯一参数(这将是 是被点击的视图)
因此 需要 将方法更改为公开:
public void onSaveItemButton(View view) {
...
}
<强>更新强>
正如错误日志所示:
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 引起:java.lang.NumberFormatException:无效的double:&#34;&#34; at java.lang.StringToReal.invalidReal(StringToReal.java:63) 在java.lang.StringToReal.parseDouble(StringToReal.java:267) 在java.lang.Double.parseDouble(Double.java:301) 在cs4720.cs.virginia.edu.duysalahandroidminiproject02.AddItem.onSaveItemButton(AddItem.java:33)
您需要在以下代码中捕获空字符串:
double Latitude = Double.parseDouble(((EditText) findViewById(R.id.Latitude)).getText().toString());
所以,先检查一下:
String val = ((EditText) findViewById(R.id.Latitude)).getText().toString();
if(!val.equals("") {
double Latitude = Double.parseDouble(val);
}
答案 1 :(得分:-1)
您正在从未初始化的视图中调用 onSaveItemButton 方法。您必须在活动中的 onCreate 中初始化 btnChangeDate 。