我有像这样的私有方法
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
中调用该方法并通过按钮单击测试以显示带有这样的Toast的列表值:
@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 event 里面,并且它有效......)
答案 0 :(得分:5)
您在方法List<Integer> generated = new ArrayList<Integer>();
旁边声明acaknomor()
。因此Toast不可见。
我建议你在班级宣布。
生成私人列表;
现在位于acaknomor()
private void acaknomor() {
generated = new ArrayList<Integer>(); // Modify this line
for (int i = 0; i <= 4; i++) {
...
答案 1 :(得分:1)
而不是:
List<Integer> generated = new ArrayList<Integer>();
使用
generated = new ArrayList<Integer>();
并为您的活动声明List<Integer> generated
答案 2 :(得分:1)
请看一下acaknomor方法
private void acaknomor() {
List<Integer> generated = new ArrayList<Integer>();....
使用generated = new ArrayList<Integer>();
并制作List<Integer> generated =null;
Global,可以帮助您解决此问题