【问题标题】:Redundant String Format in Java in Android StudioAndroid Studio中Java中的冗余字符串格式
【发布时间】:2019-07-02 02:20:15
【问题描述】:

单击按钮后,我尝试更新 TextView。 我使用 Strings.xml 来帮助我,并将其命名为“正义”。 不幸的是,当我单击按钮时,显然“正义”中的所有文本都添加了两次。一个带有粗体字体,另一个没有粗体字体。

我尝试添加“%s”,但它也不起作用。我使用的是 Android Studio 3.3.0。

public void onCreate(Bundle savedInstanceState) {

   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);

   tView = (TextView) findViewById(R.id.textView1);
   clickhere = (Button) findViewById(R.id.button1);

   clickhere.setOnClickListener(new View.OnClickListener() {
       public void onClick(View v) {
          String display = String.format(getString(R.string.justice, "%s"));
          tView.setText(display);
       }
   });
}

当我点击按钮时,我希望只看到一份“正义”。这个错误是来自 Android Studio 还是我的代码有问题???有人,请帮帮我。谢谢你。

【问题讨论】:

    标签: java android


    【解决方案1】:

    你应该可以这样设置文本:

    tView.setText(getString(R.string.justice));
    

    【讨论】:

    • 不......它是一样的。它添加了两次“正义”的所有文本。一个有粗体,第二个没有粗体。非常非常奇怪。
    • 布局文件中是否有可能有 2 个单独的文本字段?如果你这样设置,同一个文本字段有粗体和非粗体是没有意义的
    • 是的,现在可以了。我的错。我忘了我在布局文件中添加了两个 TextView。现在的问题是为什么 Text 没有任何粗体样式而我在 text ??? 中添加了一些
    • 你没有在 android 中用 设置粗体。您必须像在这个问题中一样在 xml 文件中设置 textStyle:stackoverflow.com/questions/4792260/…
    【解决方案2】:
    public void onCreate(Bundle savedInstanceState) {
    
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
    
       // clean up code :)
       tView = findViewById(R.id.textView1);
       clickhere = findViewById(R.id.button1);
    
       clickhere.setOnClickListener(new View.OnClickListener() {
           public void onClick(View v) {
              tView.setText(R.String.justice);
           }
       });
    }
    

    【讨论】:

    • 您的回答是最正确的,先生。通过直接这样做,现在粗体样式( Text )再次起作用。谢谢。
    【解决方案3】:

    首先,检查您的 strings.xml 并确保您没有重复的字符串。如果没有,请尝试以下操作

     public void onCreate(Bundle savedInstanceState) {
    
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
    
       tView = (TextView) findViewById(R.id.textView1);
       clickhere = (Button) findViewById(R.id.button1);
    
       clickhere.setOnClickListener(new View.OnClickListener() {
           public void onClick(View v) {
              String display = getString(R.string.justice);
              tView.setText(display);
           }
       });
    }
    

    顺便说一句,要获得对视图对象的引用,您不需要显式转换。下面的也可以。

    tView = findViewById(R.id.textView1);
    clickhere = findViewById(R.id.button1);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      相关资源
      最近更新 更多