我在Result_Page中发送两个用户输入值,TextView将显示输入。但是我在Result_Page中的这一行收到错误。任何提示都非常有价值。谢谢。
cl = Double.parseDouble(rd1);
xml layout
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="16dp"
android:layout_marginTop="25dp"
android:text="Done" />
<EditText
android:id="@+id/editText2"
android:layout_width="155dp"
android:layout_height="40dp"
android:layout_alignLeft="@+id/editText1"
android:layout_alignTop="@+id/textView2"
android:hint="Fill percentage"
android:ems="10"
android:inputType="numberDecimal" />
<EditText
android:id="@+id/editText1"
android:layout_width="155dp"
android:layout_height="40dp"
android:layout_alignBaseline="@+id/textView1"
android:layout_alignBottom="@+id/textView1"
android:layout_alignRight="@+id/btn"
android:ems="10"
android:hint="Fill centilitre"
android:inputType="numberDecimal" />
</RelativeLayout>
信息
//not publishing the imports here
public class Info extends Activity {
EditText editText1, editText2;
Button btn;
private String rd1, rd2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_info);
initCommonGui();
initListeners();
}
public void initCommonGui() {
btn = (Button) findViewById(R.id.btn);
editText1 = (EditText) findViewById(R.id.editText1);
editTextProsent = (EditText) findViewById(R.id.editText2);
}
private void initListeners() {
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (editText1.equals(null)) {
Log.i("nana", "do nothing");
} else {
rd1 = editText1.getText().toString().trim();
}
if (editText2.equals(null)) {
Log.i("nana", "do nothing");
} else {
rd2 = editText2.getText().toString().trim();
}
if (!editText1.equals(null) && !editText2.equals(null)) {
otherActivity("result");
} else {
Toast.makeText(getApplicationContext(),
"Fill in the blanks !",
Toast.LENGTH_SHORT).show();
}
}
});
}
public void otherActivity(String a) {
Intent i = new Intent();
if (a.equals("result")) {
i.putExtra("rd1", rd1);
i.putExtra("rd2", rd2);
i.setClass(getApplicationContext(), Result_Page.class);
}
startActivity(i);
finish();
}
}
Result_Page
public class Result_Page extends Activity {
TextView result;
String rd1, rd2;
private float percentage;
double cl;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
Intent intent = getIntent();
rd1 = intent.getStringExtra("rd1");
rd2 = intent.getStringExtra("rd2");
cl = Double.parseDouble(rd1);
percentage = Float.parseFloat(rd2);
result = (TextView) findViewById(R.id.result);
result.setText(" " + cl + " " + percentage);
}
}
答案 0 :(得分:1)
您传递的String
问题可能是空的,不是可兑换到Double
所以Handle
NumberFormatException
Exception
如下所示
try {
cl = Double.parseDouble(rd1);
System.out.println("Double Value is " + " " +c1);
} catch (NumberFormatException nfe) {
nfe.printStackTrace();
}
首先检查weather String is Empty or not
public static boolean isNullOrEmpty(String value) {
return value == null || value.length() == 0;
}
答案 1 :(得分:0)
在传递值之前,如果String不为null,则将它们转换为Double。如果String为null则传递0.0或类似的东西。