2012-08-05 73 views
1

我是一個新的在這裏。 我試圖做一個消息列表,其中消息1的內容,消息2 &消息3. 但是下面的代碼顯示錯誤消息。參數ITEMS的非法修飾符;只有最後被允許

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

錯誤消息:

Illegal modifier for parameter ITEMS; only final is permitted 

然而,在 「ANOTHER PROJECT」,我做一個水果列表,使用下面的代碼。

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

什麼梅內說。將該行移到'onCreate(...)'的外面,儘管我不知道爲什麼你會希望數組是靜態的。 – Squonk 2012-08-05 22:39:20

+0

謝謝。好吧,因爲我對此很陌生,所以我在做的只是跟隨和參考互聯網上的其他例子。到目前爲止,我所知道的有關「靜態」的知識用於定義類(如果我錯了,請糾正我) – kin 2012-08-06 03:52:46

+0

在普通Java中對數據成員(如「ITEMS」數組成員)使用'static'修飾符,意味着即使沒有創建類的實例,也可以從定義它的類訪問它。這不是你應該如何使用Android'Activity',但是它不是'普通'的Java類,所以你不應該在'Activity'類中使用'static'數據成員(字段)或靜態'方法。 – Squonk 2012-08-06 09:53:10

回答

4

您不能在Method中使用static。將聲明移至課程級別或刪除static

static意味着它是類本身的值而不是類的實例。因此,如果您創建了100個類的實例,則只有一個此變量的共享實例,如果您聲明它爲static,但是如果您不聲明static,則會有100個實例。

在Java中,這種類型的變量只能在類級別上使用。作爲一個方面說明:在C++(不確定C語言)中,您可以在具有類似語義的方法/函數中使用它:每次調用函數/方法時,該變量的內存將相同初始化只能在第一次調用時完成。但是你不能從函數/方法外部尋址內存,因此變量將是「函數/方法私有」。

+0

謝謝..它是有用的,但應用程序沒有響應,而在AVD運行..你有什麼想法嗎? – kin 2012-08-06 02:53:52

+0

不知道AVD應該是什麼意思。但由於現在這是一個不同的問題,你最好創建一個新問題。 – Mene 2012-08-06 08:57:24

+1

@Mene:AVD - > Android虛擬設備,換句話說仿真器 – Squonk 2012-08-06 09:47:55

0

從ITEMS字符串數組中刪除static聲明。

或者,如果將ITEMS數組聲明爲類屬性,則可以保留它。