初めてのAndroid Javaプログラム、摂氏と華氏の変換を行いました。これは最初はうまくいきますが、数回のコンバージョンが行われてもコンバージョンは行われません。値を変更してボタンを押すと、フィールドは更新されません。Androidプログラムがいくつかの使用の後に動作しなくなる
ここにコードがあります。
package fi.peltoset.mikko.celfahr;
import java.text.DecimalFormat;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class Celfahr extends Activity {
private double celsius = 0.0;
private double fahrenheit = 0.0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button celsiusasteiksi = (Button) findViewById(R.id.celsiusasteiksi);
Button fahrenheiteiksi = (Button) findViewById(R.id.fahrenheitasteiksi);
celsiusasteiksi.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
fahrenheit = Double.parseDouble(((EditText)
findViewById(R.id.fahrenheitkentta)).getText().toString());
((EditText) findViewById(R.id.celciuskentta)).setText(
String.valueOf(pyorista((fahrenheit - 32)/1.8)));
}
});
fahrenheiteiksi.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
celsius = Double.parseDouble(((EditText) findViewById(R.id.celciuskentta))
.getText().toString());
((EditText) findViewById(R.id.fahrenheitkentta))
.setText(String.valueOf(pyorista(celsius * 1.8 + 32)));
}
});
}
double pyorista(double d) {
DecimalFormat df = new DecimalFormat("#.#");
return Double.valueOf(df.format(d));
}
}
ありがとうございます(フィンランド語、heh ...)。
ここで、入力テキスト(変換したい値)を入力しますか? – Blackbelt
あなた自身の正気のために、あなたの編集テキストを作成して、毎回そのビューを見つけるのではなく、それらを参照するのがずっと簡単です。既にボタンのために行ったように – Tony
EditTextフィールドはクリックごとに再初期化されます。問題に関連している可能性があります。リスナーを設定する前にフィールドとして使用して一度だけ初期化することはできますか? – Ostkontentitan