簡體   English   中英

Android Studio-使用單選按鈕來計算用戶輸入並從按鈕顯示

[英]Android Studio - Use of radio buttons to calculate user input and display from button

我試圖讓我的轉換器應用程序正常工作,但遇到了麻煩。 該應用程序應該接受用戶輸入,然后根據用戶選擇的單選按鈕,將使用單選按鈕特定的計算來計算用戶輸入,然后在用戶單擊“轉換”按鈕時顯示在TextView中。

當前,單選按鈕選擇計算,但計算不正確,我確定這是修復它的簡單過程,但找不到。

這是我的代碼:

XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.MainActivity">

    <ImageView
        android:id="@+id/imageViewBack"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        app:srcCompat="@drawable/neo" />

    <EditText
        android:id="@+id/editTextUser"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="14dp"
        android:ems="10"
        android:hint="Enter Amount"
        android:inputType="numberDecimal" />

    <RadioGroup
        android:id="@+id/radioGroupCurrencies"
        android:layout_width="match_parent"
        android:layout_height="60sp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/editTextUser"
        android:layout_marginTop="20dp">

        <RadioButton
            android:id="@+id/radioButtonZar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:checked="true"
            android:onClick="onRadioButtonClicked"
            android:text="ZAR" />

        <RadioButton
            android:id="@+id/radioButtonNeo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/radioGroupCurrencies"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_weight="1"
            android:onClick="onRadioButtonClicked"
            android:text="NEO" />
    </RadioGroup>

    <Button
        android:id="@+id/buttonConvert"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginBottom="16dp"
        android:layout_marginLeft="43dp"
        android:layout_marginStart="43dp"
        android:text="Convert" />

    <Button
        android:id="@+id/buttonClear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/buttonConvert"
        android:layout_alignBottom="@+id/buttonConvert"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_marginEnd="42dp"
        android:layout_marginRight="42dp"
        android:text="Clear" />

    <TextView
        android:id="@+id/textViewOutput"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/buttonConvert"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginBottom="44dp"
        android:textSize="30sp" />

</RelativeLayout>

主要活動:

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


public class MainActivity extends AppCompatActivity {

    RadioButton zar, neo;
    Double zarAmount;
    Double neoAmount;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }
    public void onRadioButtonClicked(final View view) {
        final boolean checked = ((RadioButton) view).isChecked();
        EditText editTextUser = findViewById(R.id.editTextUser);
        final TextView textViewOuput = findViewById(R.id.textViewOutput);
        final Double userInput = Double.parseDouble(editTextUser.getText().toString());

        zar = findViewById(R.id.radioButtonZar);
        neo = findViewById(R.id.radioButtonNeo);

        Button btn = findViewById(R.id.buttonConvert);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                NumberFormat nm = NumberFormat.getNumberInstance();

        switch(view.getId()) {
            case R.id.radioButtonZar:
                if(checked)
                    zarAmount = (userInput * 833.44);
                    textViewOuput.setText(nm.format(zarAmount));

                break;
            case R.id.radioButtonNeo:
                if(checked)
                    neoAmount = (userInput / 0.001199);
                    textViewOuput.setText(nm.format(neoAmount));
                break;

        }
            }
        });
    }
}

如果我做錯了什么,請告訴我。 謝謝。

您必須在單擊按鈕內更改userInput的調養

    final Double userInput = Double.parseDouble(editTextUser.getText().toString());

有onRadioButtonClicked的代碼

 public void onRadioButtonClicked(final View view) {
    final boolean checked = ((RadioButton) view).isChecked();
    final EditText editTextUser = findViewById(R.id.editTextUser);
    final TextView textViewOuput = findViewById(R.id.textViewOutput);


    zar = findViewById(R.id.radioButtonZar);
    neo = findViewById(R.id.radioButtonNeo);

    Button btn = findViewById(R.id.buttonConvert);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            NumberFormat nm = NumberFormat.getNumberInstance();
            final Double userInput = Double.parseDouble(editTextUser.getText().toString());
            switch(view.getId()) {
                case R.id.radioButtonZar:
                    if(checked)
                        zarAmount = (userInput * 833.44);
                    textViewOuput.setText(nm.format(zarAmount));

                    break;
                case R.id.radioButtonNeo:
                    if(checked)
                        neoAmount = (userInput / 0.001199);
                    textViewOuput.setText(nm.format(neoAmount));
                    break;

            }
        }
    });
}

我還有另一種觀察,您必須在解析Double以防止崩潰之前驗證editTextUser.getText()。toString()是否不同於null。

希望對您有所幫助:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM