参数ITEMS的非法修饰符;只有决赛是允许的

时间:2012-08-05 22:27:21

标签: android list listview

我是新来的。 我正在尝试使用消息1,消息2和消息2的内容来创建消息列表。消息3。 但下面的代码显示错误消息。

static final String[] ITEMS = new String[] { "message 1", "message 2", "message 3" };

错误消息:

Illegal modifier for parameter ITEMS; only final is permitted

然而在“另一个项目”中,我正在使用下面的代码进行水果列表。

static final String[] FRUITS = new String[] { "Apple", "Banana", "Coconut" };

它完美无缺。两个代码看起来完全一样,所以我不知道问题出在哪里。

下面是消息列表的完整代码。

package net.eg.itemlist;


import android.os.Bundle;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.app.ListActivity;

public class Main extends ListActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    static final String[] ITEMS = new String[] { "message 1", "message 2", "message 3" };

    ArrayAdapter<String> adapter =
        new ArrayAdapter<String>(this, R.layout.main, R.id.textview_id, ITEMS);
    setListAdapter(adapter);            


}
}

2 个答案:

答案 0 :(得分:4)

您无法在方法中使用static。将声明移至课程级别或删除static

static表示它是类本身的值而不是类的实例。因此,如果您创建了100个类的实例,那么如果您声明它static,则该变量只有一个共享实例,但如果您不声明它static,则会有100个实例。

在Java中,这种变量只允许在类级别使用。

作为旁注:在C ++中(不确定C)你可以在具有类似语义的方法/函数中使用它:每次调用函数/方法和初始化时,该变量的内存都是相同的只会在第一次通话时完成。但是你不能从函数/方法之外寻址内存,因此变量将是“function / method-private”。

答案 1 :(得分:0)

从ITEMS字符串数组中删除static声明。

或者,如果将ITEMS数组声明为类属性,则可以保留它。