[英]Is there a way where the user input the data on the app (Android Studio) and it will be display via on Button from the database(Firebase)
[英]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.