gpt4 book ai didi

android - android 中的 OnCheckedChangeListener 和 OnClickListener——按钮在第一次单击时半工作,在第二次单击时完成?

转载 作者:行者123 更新时间:2023-11-29 16:13:25 25 4
gpt4 key购买 nike

好吧...这里有一个问题,看起来我不是第一个经历过其他问题的人,但是我找不到特定于 Android 的问题(其他是 C++ 或具有不同场景的纯 Java)。

我有一个计算器,可以根据给定的用户输入确定您的燃油里程需求。我现在要添加的是一个“burnoff”方面,您可以在其中计算在比赛过程中损失的重量。在添加 weight/burnoff 元素之前,一切正常。

现在,在第一次点击时重量除外一切都正常计算。

在第二次点击(和后续点击)时,它会正确计算。我怀疑它与 switch 语句及其位置有关,但我可能是错的....即使我不是,我也不确定如何更改它。

寻求有关在第一次点击时使其全部正常运行的帮助。谢谢!

编辑:我作为调试器放入的非异常 Toast 文本,以确定它是数学问题还是代码中的问题。第一次点击时弹出“0.0”,随后点击时弹出“6.2”或“6.6”。


    package com.tomcat.performance;

import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;
import android.widget.Toast;


public class Fuelsimple extends Activity implements OnCheckedChangeListener{

double fuelweight;

public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
switch (checkedId){
case R.id.rbMethanol:
fuelweight = 6.6;
break;
case R.id.rbGasoline:
fuelweight = 6.2;
break;}
}

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

RadioGroup rgFuelType = ((RadioGroup) findViewById (R.id.rgFuelType));
rgFuelType.setOnCheckedChangeListener(this);
RadioButton rbMethanol = ((RadioButton) findViewById(R.id.rbMethanol));
RadioButton rbGasoline = ((RadioButton) findViewById(R.id.rbGasoline));

Button gen = ((Button) findViewById(R.id.submit));
gen.setOnClickListener(new View.OnClickListener() {



public void onClick(View v) {
// TODO Auto-generated method stub

EditText fuelUsed, pracLaps, featureLaps;

pracLaps = ((EditText) findViewById(R.id.pracLaps));
fuelUsed = ((EditText) findViewById(R.id.fuelUsed));
featureLaps = ((EditText) findViewById(R.id.featureLaps));
TextView textLPGValue, textFuelNeededValue, textBurnoffValue;
try{
double pracLapsVar = Double.parseDouble(pracLaps.getText().toString());
double fuelUsedVar = Double.parseDouble(fuelUsed.getText().toString());
double featureLapsVar = Double.parseDouble(featureLaps.getText().toString());

double efficiency = (pracLapsVar / fuelUsedVar);
double fuelNeeded = (featureLapsVar / efficiency);
double burnoff = (1.05 * (fuelNeeded * fuelweight));

Toast andJelly = Toast.makeText(Fuelsimple.this, String.valueOf(fuelweight), Toast.LENGTH_LONG);
andJelly.show();


textLPGValue = ((TextView) findViewById(R.id.textLPGValue));
textFuelNeededValue = ((TextView) findViewById(R.id.textFuelNeededValue));
textBurnoffValue = ((TextView) findViewById(R.id.textBurnoffValue));

textLPGValue.setText(String.valueOf(String.format("%.3f", efficiency)) + " laps per gallon");
textFuelNeededValue.setText(String.valueOf(String.format("%.3f", fuelNeeded)) + " gallons");
textBurnoffValue.setText(String.valueOf(String.format("%.2f", burnoff)) + " pounds");
} catch (NumberFormatException e) {Toast andEggs = Toast.makeText(Fuelsimple.this, "Please complete all fields and enter your fuel & lap info in decimals or whole numbers.", Toast.LENGTH_LONG); andEggs.show();}
catch (NullPointerException n) {Toast andEggs = Toast.makeText(Fuelsimple.this, "Please enter ALL lap and fuel data.", Toast.LENGTH_LONG);
andEggs.show();}
}}
);
}
public void onClick(View v) {
}
}

最佳答案

据我所知,在按下单选按钮之前,您的变量 fuelWeight 永远不会被初始化。解决此问题的最简单方法是在 rbmethanol 或 rbGasoline 上调用 setChecked(true) 在设置监听器之后,可能就在您初始化这些变量的位置下方。在设置监听器之后执行此操作很重要,因为您希望解析 switch 语句。现在,在您按下单选按钮之前,fuelWeight 与所有数字原始数据类型一样,将被初始化为 0。这可能是您第一次计算错误的原因。

关于android - android 中的 OnCheckedChangeListener 和 OnClickListener——按钮在第一次单击时半工作,在第二次单击时完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11350703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com