为什么oncreate事件中的方法不起作用?

时间:2014-02-20 05:08:03

标签: android methods

我有像这样的私有方法

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 里面,并且它有效......)

3 个答案:

答案 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,可以帮助您解决此问题