将输入值发送到另一个Activity时,我的Android应用程序崩溃了

时间:2014-05-08 10:05:32

标签: android

我在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);
}
}

2 个答案:

答案 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或类似的东西。