我目前正在浏览一些关于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