A_Porcupine
A_Porcupine

Reputation: 1038

Array of android buttons

Can't work out a way to make an array of buttons in android.

This is the code I have tried but I'm getting a java.lang.NullPointerException.

    private Button[] button = {(Button) findViewById(R.id.cGuess1),
        (Button) findViewById(R.id.cGuess2),(Button)
        findViewById(R.id.cGuess3),(Button) findViewById(R.id.cGuess4)};

Is this even possible?

EDIT:

Sorry everyone. Just realised my mistake!

I was trying to declare the array for my whole class and trying to get the views from the ids before onCreate so there was no setContentView(R.layout.game);

Sorry.

Upvotes: 1

Views: 4042

Answers (5)

Phearum Chheang
Phearum Chheang

Reputation: 89

public class main2 extends Activity{
    final int[] button = {R.id.button1,R.id.button2,R.id.button3,R.id.button4,R.id.button5,
            R.id.button6,R.id.button7,R.id.button8,R.id.button9,R.id.button10};
    Button[] bt = new Button[button.length];
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sign);
        for(int i=0;i<button.length;i++){
            final Context context = this;
            final int b = i;
            bt[b]= (Button) findViewById(button[b]);
            Typeface font = Typeface.createFromAsset(getAssets(), "Angkor.ttf");
            bt[b].setTypeface(font);
            bt[b].setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Intent myIntent = new Intent(context,r1.class);
                    startActivity(myIntent);
                }
            });
        }
    }
}

Upvotes: 0

Josh
Josh

Reputation: 10738

Since no one else posted actual code for a solution, here's a working snippet.

Button[] myButtons = null;

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    myButtons = new Button[]
    {
            (Button)findViewById(R.id.button1),
            (Button)findViewById(R.id.button2),
            (Button)findViewById(R.id.button3),
    };
}

Upvotes: 2

jeet
jeet

Reputation: 29199

Just a guess as full code is not available here, have you called setContentView() before creating array.

Upvotes: 1

Usama Sarwar
Usama Sarwar

Reputation: 9020

One of your buttons may be null. And putting a private keyword does not allow me to create the array. Also see that Firstly you are setting the cententView for your activity and then accessing these buttons.

Upvotes: 1

Deepak
Deepak

Reputation: 1141

Could you try

final Button[] button = {(Button) findViewById(R.id.cGuess1), 
    (Button) findViewById(R.id.cGuess2),(Button) 
    findViewById(R.id.cGuess3),(Button) findViewById(R.id.cGuess4)};

Upvotes: 1

Related Questions