2012-01-09 3 views
1

Невозможно разработать способ создания массива кнопок в 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)}; 

Возможно ли это?

EDIT:

Извините, все. Просто осознал свою ошибку!

Я пытался объявить массив для всего моего класса и попытался получить представления из идентификаторов до того, как он появился, поэтому не было setContentView (R.layout.game);

Извините.

+1

пожалуйста, напишите полное исключение из вашего LogCat, это может быть, что ваша точка зрения не была завышена – Guillaume

+0

Ну это здорово вы осознали свою ошибку. Но примите или поддержите комментарии и ответы, которые вам помогли. –

+0

есть, возможно. с какой ошибкой или неожиданным результатом вы сталкиваетесь ??? share detail code –

ответ

1

Просто предположим, что полный код здесь не доступен, вы вызываете setContentView() перед созданием массива.

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

Один из ваших кнопок может быть пустым. И помещение частного ключевого слова не позволяет мне создать массив. Также убедитесь, что во-первых, вы устанавливаете cententView для своей деятельности, а затем получаете доступ к этим кнопкам.

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

Привет @PhearumChheang, не могли бы вы объяснить свой ответ, пожалуйста? Код без комментариев менее полезен, чем хорошо прокомментированный код, из которого другие могут учиться. Спасибо. –

+0

Извините за некоторые ошибки. Этот код имеет много кнопок и хочет его использовать для использования только в одной цели. Например, вы хотите начать новую деятельность, нажав на кнопку, что хотите. –

Смежные вопросы