我有一个像这样的私有(private)方法
private void acaknomor() {
List<Integer> generated = new ArrayList<Integer>();
for (int i = 0; i <= 4; i++) {
while (true) {
Integer next = ran.nextInt(4 + 1) + 0;
if (!generated.contains(next)) {
generated.add(next);
break;
}
}
}
int[] arrayAcak = new int[generated.size()];
for (int i = 0; i < generated.size(); i++) {
arrayAcak[i] = generated.get(i);
}
}
我在 oncreate
中调用该方法并通过单击按钮进行测试以显示列表值,如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
acaknomor();
btn_next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), String.valueOf(generated), Toast.LENGTH_SHORT).show();
}
});
问题是为什么当我将 toast 放入方法中时它显示 null
,而不是显示“0,1,2,3,4”?
我在没有方法的情况下测试了我的代码(将其原始放入 oncreate 事件 并且它有效...)
最佳答案
您正在声明 List<Integer> generated = new ArrayList<Integer>();
里面的方法acaknomor()
.所以它对于 Toast 是不可见的。
我建议你在类级别声明它。
已生成私有(private)列表;
现在里面acaknomor()
private void acaknomor() {
generated = new ArrayList<Integer>(); // Modify this line
for (int i = 0; i <= 4; i++) {
...
关于android - 为什么 oncreate 事件中的方法不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21898642/