【问题标题】:How to set R.string.resource_name in this case在这种情况下如何设置 R.string.resource_name
【发布时间】:2020-01-10 13:31:16
【问题描述】:

我有这样的代码

if(POS>=5){
    Toast.makeText(SubActivity.this,R.string.last,Toast.LENGTH_SHORT).show();
 }else {
     POS += 1;
     fillDetails(POS);
 }

我想从strings.xml得到if(POS>=5)中的这个“5”

strings.xml我有

<string name="lastarticle">5</string>

这些我都试过了

if(POS>=R.string.lastaricle)

if(POS>=getString(R.string.lastaricle))

if(POS>=getResources().getString(R.string.mess_1))

if(POS>=this.getString(R.string.resource_name))

if(POS>=@string/lastarticle)

但他们都没有工作。我想我错过了什么,但我不知道它是什么?

【问题讨论】:

标签: java android r string


【解决方案1】:

您应该将该字符串转换为 int,然后将其与 POS 进行比较:

if(POS >= Integer.parseInt(getString(R.string.lastaricle))){
     Toast.makeText(SubActivity.this, R.string.last, Toast.LENGTH_SHORT).show();
} else {
     POS += 1;
     fillDetails(POS);
}

【讨论】:

    【解决方案2】:

    integers.xml 用于整数参考:https://developer.android.com/guide/topics/resources/more-resources#Integer

    然后,无论您使用 strings.xml 还是 integers.xml,都会生成引用的整数,即 R.string.lastaricleR.integer.lastaricle,因此要获得值,您需要从 https://developer.android.com/reference/android/content/res/Resources 调用 getter

    if(POS>=getString(R.string.lastaricle))

    if(POS>=getResources().getString(R.string.mess_1))

    if(POS>=this.getString(R.string.resource_name))

    因为您将 StringInteger 进行了比较,所以这些都不起作用

    整数.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <integer name="lastaricle">5</integer>
    </resources>
    
        if (POS >= getResources().getInteger(R.integer.lastaricle)) {
            Toast.makeText(SubActivity.this, R.string.lastaricle, Toast.LENGTH_SHORT).show();
        } else {
            POS += 1;
            fillDetails(POS);
        }
    

    【讨论】:

      猜你喜欢
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 2016-03-27
      • 2018-03-21
      • 2016-12-16
      • 2014-03-21
      • 2014-02-18
      • 1970-01-01
      相关资源
      最近更新 更多