我按照教程制作温度转换Android应用程序

时间:2017-03-30 21:52:23

标签: android weather

我一步一步地按照所有内容运行应用程序,当我使用滑块时,我的数字不会改变并保持在“0.1”。我错过了一步吗?

    package com.example.tempconv;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.SeekBar;
    import android.widget.TextView;

    import java.util.Locale;

    public class MainActivity extends AppCompatActivity {

    TextView cel, fah;

    SeekBar seekBar;

    double c, f;


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

    cel =  (TextView) findViewById(R.id.cel);
    fah =  (TextView) findViewById(R.id.fah);

    seekBar = (SeekBar) findViewById(R.id.seekBar);
    seekBar.setMax(400);
    seekBar.setProgress(200);

    c = seekBar.getProgress() - 200;
    f = c * 1.8 +32;
    cel.setText(String.format(Locale.getDefault(), "0.1 C", c));
    fah.setText(String.format(Locale.getDefault(), "0.1 F", f));

    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
            c = i - 200;
            f = c * 1.8 +32;
            cel.setText(String.format(Locale.getDefault(), "0.1 C", c));
            fah.setText(String.format(Locale.getDefault(), "0.1 F", f));
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }
    });

}
}

这正是我在观看过的YouTube视频中看到的内容。我真的不知道我做错了什么,因为它对我看过的那个人来说完全没问题。

1 个答案:

答案 0 :(得分:0)

看起来你并没有让String.format()方法做到这一点 - String.format(locale, string, variable)

您需要对字符串结果进行硬编码,而不包含变量的位置。

对于你的double c和f,将%s放在字符串中,以便String.format可以为你替换和格式化字符串。

cel.setText(String.format(Locale.getDefault(), "%s C", c));
fah.setText(String.format(Locale.getDefault(), "%s F", f));

请注意,在您提供的代码中调用此setText()两次,因此需要针对这两个部分进行更改(最重要的是onProgressChanged part()