Android按钮的数组

时间:2012-01-09 12:52:29

标签: android arrays android-button

无法找到在android中制作一系列按钮的方法。

这是我尝试过的代码,但是我收到了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)};

这甚至可能吗?

编辑:

对不起大家。刚意识到我的错误!

我试图为我的整个类声明数组并尝试在onCreate之前从id获取视图,因此没有setContentView(R.layout.game);

对不起。

5 个答案:

答案 0 :(得分:2)

由于没有其他人发布解决方案的实际代码,因此这是一个工作代码段。

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

答案 1 :(得分:1)

你能试试吗

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

答案 2 :(得分:1)

您的其中一个按钮可能为空。并且放置私有关键字不允许我创建数组。另请参阅首先,您要为活动设置cententView,然后访问这些按钮。

答案 3 :(得分:1)

只是猜测因为这里没有完整的代码,你是否在创建数组之前调用了setContentView()。

答案 4 :(得分:0)

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