Android Studio:当我运行我的应用程序时,它说不幸的应用已停止

时间:2018-04-06 04:44:05

标签: java android type-conversion

我正在尝试从用户获取输入然后将其转换为double并将其除以1000,然后在textview中设置值,但我在运行应用程序时,应用程序关闭并说不幸的是应用程序已停止。 这是我的MainActivity.java文件:

package com.blogspot.techtutorialsajen.androiddevelopmentpractice;

import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity{

private Button btn1;
private EditText get;
private TextView result;
@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn1 = (Button)findViewById(R.id.btn1);
    result = (TextView)findViewById(R.id.result);
    get = (EditText)findViewById(R.id.get);

    final double value = Double.parseDouble(get.getText().toString()) / 1000;

    btn1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            result.setText(String.valueOf(value));

            }
        });
    }
}

我的activity_main.xml文件:

?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">

<EditText
    android:id="@+id/get"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:hint="@string/enter_a_number"
    android:layout_marginTop="48dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<Button
    android:id="@+id/btn1"
    android:text="@string/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/result"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="28dp" />

<TextView
    android:id="@+id/result"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:textSize="20pt"
    android:text="0"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true" />

</RelativeLayout>

2 个答案:

答案 0 :(得分:0)

在您的xml文件和活动代码中,它会在启动应用时清楚地显示您的 edittext is empty

您在oncreate()

中使用此代码
final double value = Double.parseDouble(get.getText().toString()) / 1000;

抛出 java.lang.NumberFormatException: empty String

您可以更改代码,

btn1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        if(!get.getText().toString().isEmpty)
           final double value = Double.parseDouble(get.getText().toString()) / 1000;
           result.setText(String.valueOf(value));

        }
    });
}

答案 1 :(得分:0)

嗯,由于java.lang.RuntimeException:java.lang.NumberFormatException: Invalid double: ""您的应用崩溃了 这意味着您正在尝试将empty string转换为Double

因此,由于EditText为空,您的应用程序崩溃,我重新编写代码,以便您copy-paste

这是您的MainActivity.Java

package com.blogspot.techtutorialsajen.androiddevelopmentpractice;

import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity{

private Button btn1;
private EditText get;
private TextView result;
@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn1 = (Button)findViewById(R.id.btn1);
    result = (TextView)findViewById(R.id.result);
    get = (EditText)findViewById(R.id.get);
 btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                if (get.getText().toString().isEmpty()) {
                    Toast.makeText(MainActivity .this, "Please input something", Toast.LENGTH_LONG).show();
                } else {
                    final double value = Double.parseDouble(get.getText().toString()) / 1000;
                    result.setText(String.valueOf(value));
                }

            }
        });

    }
}

这是您的activity_main.XML

<?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">

<EditText
    android:id="@+id/get"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:hint="@string/enter_a_number"
    android:layout_marginTop="48dp"
    android:inputType="number"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<Button
    android:id="@+id/btn1"
    android:text="@string/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/result"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="28dp" />

<TextView
    android:id="@+id/result"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:textSize="20pt"
    android:text="0"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true" />

</RelativeLayout>

我已将android:inputType="number"属性添加到您的EditText,以便现在只需要用户Number