我目前正在瀏覽一些關於Java和Android的教程,並剛剛轉到了數組上。我試圖修改我之前在代碼中使用數組而不是字符串的應用程序。使用公共字符串數組的靜態內容的非靜態字段
我有我的主類稱爲FunFactsActivity,並且我聲明瞭一個名爲mFunFactsActivity的字符串數組。我然後加載到mFunFactsActivity的字符串數組 - 這工作正常。
然後,我在按鈕上有一個onClickListener,按下後會從我的FactBook類中得到一個新的事實。我的代碼如下:
FunFactsActivity.java
public class FunFactsActivity extends Activity {
private FactBook mFactBook = new FactBook();
public String[] mFunFactsActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fun_facts);
Resources resources = getResources();
mFunFactsActivity = resources.getStringArray(R.array.funFacts);
final TextView factLabel = (TextView) findViewById(R.id.factTextView);
final Button showFactButton = (Button) findViewById(R.id.showFactButton);
final RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.relativeLayout);
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
String fact = mFactBook.getFact();
factLabel.setText(fact);
int color = mColorWheel.getColor();
relativeLayout.setBackgroundColor(color);
showFactButton.setTextColor(color);
}
};
showFactButton.setOnClickListener(listener);
}
}
什麼,然後我想實現的是訪問我FactBook.java文件mFunFactActivity陣列用它來獲得一個隨機的事實每下面:
FactBook.java
public class FactBook {
public String[] mFunFactsFactBook = FunFactsActivity.mFunFactsActivity;
public String getFact() {
String fact = "";
Random randomGenerator = new Random(); //Construct a new Random number generator
int randomNumber = randomGenerator.nextInt(mFunFactsFactBook.length);
fact = mFunFactsFactBook[randomNumber];
return fact;
}
}
第i我正在與該行:
public String[] mFunFactsFactBook = FunFactsActivity.mFunFactsActivity;
我被告知我無法從靜態內容引用非靜態字段。我對'靜態'的知識目前還不是很好,而且我100%確定自己瞭解它,但是從我所知道的情況來看,我所寫的代碼中沒有一個說明mFunFactsActivity是靜態的。
不幸的是,這並沒有爲我工作,因爲我被給予nullPointer問題。也許有一些額外的東西我應該做,我不知道? – K20GH 2014-08-28 22:29:26