IF语句未返回结果,Java中的Android Studio

unhi4e5o  于 2023-05-21  发布在  Java
关注(0)|答案(2)|浏览(100)

概括地说,这个函数从TextView值中提取数据。然后将其转换为双精度型,然后执行if语句,该语句标识哪个值高于另一个值。
更新代码:

public void getCurrentData();
        TextView user = (TextView) getView().findViewById(R.id.global_text_username);
        String username = getActivity().getIntent().getStringExtra("email");
        String userId = username.substring(0, 5);
        user.setText(username);

        Drawable unreach = getResources().getDrawable(R.drawable.baseline_remove_circle_24, null);

        TextView user_current_cals = (TextView) getView().findViewById(R.id.home_text_calcode);
        TextView user_current_steps = (TextView) getView().findViewById(R.id.home_text_stepcode);
        TextView user_current_target = (TextView) getView().findViewById(R.id.home_text_targetcode);

        ImageView current_cals = (ImageView) getView().findViewById(R.id.home_img_calstatus);
        ImageView current_target = (ImageView) getView().findViewById(R.id.home_img_targetstatus);
        ImageView current_steps = (ImageView) getView().findViewById(R.id.home_img_stepstatus);

问题就出在这里。虽然代码运行时没有任何错误,但第二个if语句不起作用。

String ucc = user_current_cals.getText().toString();
        double check_current_cals = Double.parseDouble(ucc);

        String uct = user_current_target.getText().toString();
        double check_current_target = Double.parseDouble(uct);

        String ucs = user_current_steps.getText().toString();
        int check_current_steps = Integer.parseInt(ucs);

        if (check_current_steps < 1000) {
            current_steps.setColorFilter(Color.argb(255, 244, 57, 57));
            current_steps.setImageDrawable(unreach);
        }

        if (check_current_cals < check_current_target) {
            current_cals.setColorFilter(Color.argb(255, 244, 57, 57));
            current_target.setColorFilter(Color.argb(255, 244, 57, 57));
            current_cals.setImageDrawable(unreach);
            current_target.setImageDrawable(unreach);
        }

我很困惑,因为什么是不正确的与此声明和任何帮助,并指出我在正确的方向将不胜感激。谢谢
我已经尝试将所有数字转换为整数,并再次执行int语句,但无济于事。

d8tt03nd

d8tt03nd1#

您可能需要从textview获取文本。
这是你的代码:

Integer.parseInt(String.valueOf(user_current_steps))

注意,您使用的是TextView对象的valueOf user_current_steps。您需要向它请求实际文本:

Integer.parseInt(String.valueOf(user_current_steps.getText()))

然后你很可能会忽略String.valueOf部分,因为它已经返回了一个字符串:

Integer.parseInt(user_current_steps.getText())
4dc9hkyq

4dc9hkyq2#

答:更新我的问题。结果是,它试图过早地检索值,这导致if语句试图执行(0 < 0)语句。
之前:

public void run () {
                    getUserInfo();
                    getCurrentData();

                }

之后:

public void run () {
                    getUserInfo();
                }

    public void getUserInfo() {
         //getUserInfo CODE HERE
         getCurrentData();
    }

谢谢你的帮助

相关问题