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);
}
}
答案 0 :(得分:4)
您无法在方法中使用static
。将声明移至课程级别或删除static
。
static
表示它是类本身的值而不是类的实例。因此,如果您创建了100个类的实例,那么如果您声明它static
,则该变量只有一个共享实例,但如果您不声明它static
,则会有100个实例。
在Java中,这种变量只允许在类级别使用。
作为旁注:在C ++中(不确定C)你可以在具有类似语义的方法/函数中使用它:每次调用函数/方法和初始化时,该变量的内存都是相同的只会在第一次通话时完成。但是你不能从函数/方法之外寻址内存,因此变量将是“function / method-private”。
答案 1 :(得分:0)
从ITEMS字符串数组中删除static
声明。
或者,如果将ITEMS数组声明为类属性,则可以保留它。