java - Android 转换器应用程序在转换时崩溃

标签 java android xml android-studio

我在 android studio 中构建了一个转换器,每次按下转换按钮时,距离部分( Activity )都会崩溃。该应用程序表示特定 Activity 已停止工作,并且该应用程序返回到主要 Activity 。它在 android studio 中没有显示任何错误,我认为我的问题可能出在微调器中使用 int pos 但我不确定。这是我要完成的最后一个元素。请帮忙。下面是 java 后接 xml。

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main4);

    spinnerFrom = (Spinner)findViewById(R.id.spinner1);
    ArrayAdapter<CharSequence> adapterFrom = ArrayAdapter.createFromResource(this, R.array.distance_array, android.R.layout.simple_spinner_item);
    adapterFrom.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerFrom.setAdapter(adapterFrom);
    spinnerFrom.setOnItemSelectedListener(this);

    spinnerTo = (Spinner)findViewById(R.id.spinner2);
    ArrayAdapter<CharSequence> adapterTo = ArrayAdapter.createFromResource(this, R.array.distance_array, android.R.layout.simple_spinner_item);
    adapterTo.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerTo.setAdapter(adapterTo);
    spinnerTo.setOnItemSelectedListener(this);

}   
public void convert(View view){
    double value = new Double(distance.getText().toString());
    from = spinnerFrom.getSelectedItemPosition();
    to = spinnerTo.getSelectedItemPosition();

    if(from == 0){
        if(to == 1)
            value = UnitConverter.feetToMiles(value);
        else if (to == 2)
            value = UnitConverter.feetToMeters(value);
        else if(to == 3)
            value = UnitConverter.feetToYards(value);
        else
            value = value;
    }else if(from == 1){
        if(to == 0)
            value = UnitConverter.milesToFeet(value);
        else  if (to == 2)
            value = UnitConverter.milesToMeters(value);
        else if(to == 3)
            value = UnitConverter.milesToYards(value);
        else
            value = value;
    }else if(from == 2){
        if(to == 0)
            value =UnitConverter.metersToFeet(value);
        else if(to == 1)
            value = UnitConverter.metersToMiles(value);
        else if(to == 3)
            value = UnitConverter.metersToYards(value);
        else
            value = value;
    }else if(from == 3){
        if(to == 0)
            value = UnitConverter.yardsToFeet(value);
        else if(to == 1)
            value = UnitConverter.yardsToMiles(value);
        else if(to == 2)
            value = UnitConverter.yardsToMeters(value);
        else
            value = value;
    }
    distance.setText(new Double(value).toString());

}

和 xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.example.jacob.myapplication.Main4Activity"
android:background="@android:color/holo_blue_bright">

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Distance Converter"
    android:id="@+id/textViewTitle"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginLeft="92dp"
    android:layout_marginStart="92dp" />

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="numberDecimal"
    android:ems="10"
    android:id="@+id/editText"
    android:layout_below="@+id/textViewTitle"
    android:layout_centerHorizontal="true"
    android:hint="Enter Distance" />

<Spinner
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/spinner1"
    android:spinnerMode="dialog"
    android:clickable="true"
    android:layout_below="@+id/textViewFrom"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Convert To:"
    android:id="@+id/textViewTo"
    android:layout_below="@+id/spinner1"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<Spinner
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/spinner2"
    android:spinnerMode="dialog"
    android:layout_below="@+id/textViewTo"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Convert From"
    android:id="@+id/textViewFrom"
    android:layout_below="@+id/editText"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Convert"
    android:id="@+id/buttonConvert"
    android:layout_below="@+id/spinner2"
    android:layout_centerHorizontal="true"
    android:onClick="convert" />

最佳答案

你没有在这里使用相同的变量名

double value = new Double(distance.getText().toString());

什么是距离,距离在哪里?我在 XML 布局中看不到它。

似乎你没有将 EditText 的名称更改为 distance,在 edittext 中,id 名称是 android:id="@+id/editText"

所以把distance的名字改成editText

关于java - Android 转换器应用程序在转换时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32603076/

相关文章:

java - Google App Engine 中的配额控制

java - J2SE平台中使用的JIT编译器的名称是什么?我怎样才能找到它?

javascript - 创建供网站和移动设备使用的 API

java - 如何从命令行运行 WAR 中的类?

java - 来自android的REST调用中的Class Cast Exception

android - 尝试使用 Cordova 安装插件时出错

c# - 如何使用 RestSharp 进行 XmlDeserialize?

java - 当同级元素具有相同名称但不同属性时,如何使用 Java 和 Xerces NodeIterator 获取同级元素

c# - 如何在 C# 中渐进加载 XML?

java - `LockSupport.park()` 可以替换 `Object.wait()` 吗?