【问题标题】:Number formatting does not take into account locale settings. Consider using String.format instead android studio数字格式不考虑区域设置。考虑使用 String.format 代替 android studio
【发布时间】:2015-10-10 07:06:48
【问题描述】:

Here 是我的问题及其解决方案。

他们试图在不同的活动之间传递 textview 值,但他们遇到了问题。当我执行代码时,应用程序在打开 StudentActivity 时崩溃,但随后显示正确的结果..这是代码

LoginActivity.java

    int a = Integer.parseInt(textView.getText().toString());
    Intent i = new Intent(LoginActivity.this, StudentActivity.class);
    i.putExtra("level", a);
    startActivity(i);

StudentActivity.java

      textView.setText(Integer.toString(getIntent().getExtras().getInt("level")));

IN studentActivity, Integer.toString(getIntent().getExtras().getInt("level")) => 这行说数字格式不考虑区域设置。考虑改用 String.format。请建议一些代码.. 任何帮助将不胜感激!

【问题讨论】:

    标签: android android-studio string.format


    【解决方案1】:

    关于警告:

    “数字格式不考虑区域设置。考虑使用String.format代替android studio”,

    这是一个名为“TextView Internationalization”的 Lint 警告,上面写着:

    当调用 TextView#setText * 永远不要调用 Number#toString() 来格式化 数字;它不会处理分数分隔符和特定于语言环境的 数字正确。考虑使用正确格式的 String#format 规格(%d 或 %f)。

    所以你应该写:

     textView.setText(String.format("%d", getIntent().getExtras().getInt("level"))));
    

    【讨论】:

    • 你还是没有在这里设置语言环境,没有区别
    • 您可以拨打String.format(Locale.getDefaultLocale(), "%d", getIntent().getExtras().getInt("level")))并添加区域设置
    【解决方案2】:

    使用

    textView.setText(String.format(Locale.getDefault(), "%d", your_int));
    

    将自动使用正确的语言环境

    【讨论】:

      【解决方案3】:

      在你LoginActivity,你插入字符串!将“a”命名为 Intent。

      在您的StudentActivity 中,您尝试获取整数!感谢来电getInt()

      只需将整行更改为

      textView.setText(getIntent().getExtras().getString("level"));
      

      【讨论】:

      • 嗯,我从来没有在 getExtras() 上使用过这样的调用。您可以尝试使用这个 getIntent().getStringExtra()。从源代码看起来结果几乎相同,但是 getExtras() 总是创建一个新的 Bundle 对象实例,因此它也不需要创建对象。无论如何,您的代码看起来完全正确,我不知道为什么当您使用整数时它应该抱怨语言环境。建议检查代码中的不同位置。
      • 抱歉耽搁了。无论如何,您提供的细节很少。一般来说,没有地方应该发生 NullPointerException。 'getIntent' 应始终为非空值。 GetStringExtra 可能返回 null,但设置为 TextView 的值是有效的!所以请检查你的代码,因为问题不在这行代码上。否则你必须发布更长的代码版本。
      • 我改变了我的格式,我使用了共享偏好来传递数据
      【解决方案4】:

      我用过:

      textView.setText(getIntent().getExtras().getString("level"));
      

      但它仍然有一些警告; 当我使用这个时:

      textView.setText(Locale.getDefault(), getIntent().getExtras().getString("level"));
      

      没关系;

      【讨论】:

        猜你喜欢
        • 2023-03-15
        • 2018-03-23
        • 2021-11-08
        • 2011-03-20
        • 1970-01-01
        • 1970-01-01
        • 2012-10-29
        • 1970-01-01
        • 2011-06-20
        相关资源
        最近更新 更多