studentknight
studentknight

Reputation: 163

why method inside oncreate event doesn't work?

I have a private method like this

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);
    }
}

i call that method in oncreate and test by button click to show list value with a toast like this :

@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();
        }
    });

The Question is why the toast show null when I put it inside a method , instead showing "0,1,2,3,4" ?

I tested my code without a method (put it raw inside oncreate event and it worked...)

Upvotes: 2

Views: 667

Answers (3)

Jitesh Upadhyay
Jitesh Upadhyay

Reputation: 5260

please have a look at acaknomor method

private void acaknomor() {
    List<Integer> generated = new ArrayList<Integer>();....

use generated = new ArrayList<Integer>();

and make List<Integer> generated =null; Global which will help you on this issue

Upvotes: 1

Pararth
Pararth

Reputation: 8134

Instead of this:

List<Integer> generated = new ArrayList<Integer>();

Use

generated = new ArrayList<Integer>();

And declare List<Integer> generated for your activity

Upvotes: 1

Lucifer
Lucifer

Reputation: 29632

Your are declaring List<Integer> generated = new ArrayList<Integer>(); in side the method acaknomor(). So it is not visible for the Toast.

I suggest you to declare it at class level.

private List generated;

Now inside the the acaknomor()

private void acaknomor() {
    generated = new ArrayList<Integer>();           // Modify this line
    for (int i = 0; i <= 4; i++) {
    ...

Upvotes: 5

Related Questions