【问题标题】:Android final variable is no variable?Android final 变量是没有变量的?
【发布时间】:2016-07-25 04:37:12
【问题描述】:

我有这样的空虚:

public static void checkStateSignal(final int counter) {
    for (int l = 0; l < counter; l += 10) {
        if (counter - l < 9) {

            Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                ArraySignal.LoggerStatus.get(counter) = separated[1];
                }
            },150);
        } 
    }
}

其中ArraySignal 是一个类,Loggerstatus 是一个Arraylist。我收到一个错误

ArraySignal.LoggerStatus.get(counter) = separated[1];

这是预期的变量。因此,出于某种原因,最终变量不是变量,ArrayList.get 不想获得值位置而不是变量位置,这对我来说似乎非常不合逻辑,因为您可以获得常数。我错过了什么吗?也非常欢迎该问题的解决方案。

【问题讨论】:

    标签: android arraylist final


    【解决方案1】:

    这是因为您正在为 ArrayList 使用访问器 .get(index) 并返回一个值,您需要使用 .add(index,elem) 在给定位置添加一个元素。检查此链接以环顾Add object to ArrayList at specified index

    【讨论】:

    • 我想要做的是将该索引中的字符串设置为某个值。不添加新的似乎有点多余,添加然后删除以前的
    • 哦,显然有一个 set 函数可以用来设置该字符串。不知道那个。找错方向了,谢谢。
    【解决方案2】:

    你可以定义一个新的类:

    Class NewRunnable extends Runnable
    {
       public int counter;
       public NewRunnable(int _counter)
       {
           counter = _counter;
           super();
       }
    }
    

    然后在你的代码中使用它:

    handler.postDelayed(new NewRunnable(counter) {
                    @Override
                    public void run() {
                    String[] separated;
                    ArraySignal.LoggerStatus.get(counter) = separated[1];
                    }
                },150);
    

    【讨论】:

      【解决方案3】:
      ArraySignal.LoggerStatus.get(counter) = separated[1]
      

      我认为问题是,您正在尝试为函数设置值

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-20
        • 2014-07-31
        • 2012-10-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多