2012-07-05 3 views
0

Я пытаюсь сделать адаптеры для прядильщиков, однако я получаю исключение NullPointerException в answertime.setAdapter (адаптер); Почему это? Мои массивы находятся в файле strings.xml, где они должны быть? Вот полный код..setAdapter (адаптер); Предоставление NullPointerException

package lijap.app.starcraft2counters; 

import java.io.File; 

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Environment; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.ArrayAdapter; 
import android.widget.Spinner; 
import android.widget.Toast; 

public class Settings extends Activity implements OnItemSelectedListener { 
Spinner answertime; 
Spinner gametime; 
Spinner missesallowed; 

String[] answerseconds = { "Unlimited", "1 second", "2 seconds", 
     "3 seconds", "4 seconds", "5 seconds" }; 

String[] gameminutes = { "Unlimited", "1 minute", "2 minutes", "3 minutes", 
     "4 minutes", "5 minutes" }; 

String[] numberofmisses = { "Unlimited", "5", "10", "15", "20", "25" }; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.settings); 

    ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.AnswerSeconds, R.layout.custom_spinner_list); 
    adapter.setDropDownViewResource(R.layout.custom_spinner); 
    answertime.setAdapter(adapter); 

    ArrayAdapter adapter2 = ArrayAdapter.createFromResource(this, R.array.GameMinutes, R.layout.custom_spinner_list); 
    adapter.setDropDownViewResource(R.layout.custom_spinner); 
    gametime.setAdapter(adapter); 

    ArrayAdapter adapter3 = ArrayAdapter.createFromResource(this, R.array.NumberOfMisses, R.layout.custom_spinner_list); 
    adapter.setDropDownViewResource(R.layout.custom_spinner); 
    missesallowed.setAdapter(adapter); 


    answertime = (Spinner) findViewById(R.id.s_answertime); 
    answertime.setAdapter(adapter); 
    answertime.setOnItemSelectedListener(this); 


    missesallowed = (Spinner) findViewById(R.id.s_mistakenumber); 
    missesallowed.setAdapter(adapter2); 
    missesallowed.setOnItemSelectedListener(this); 

    gametime = (Spinner) findViewById(R.id.s_gametime); 
    gametime.setAdapter(adapter3); 
    gametime.setOnItemSelectedListener(this); 
} 

@Override 
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, 
     long arg3) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onNothingSelected(AdapterView<?> arg0) { 
    // TODO Auto-generated method stub 

} 

}

Любая помощь appreciated- Lijap

ответ

2

вы никогда не инициализировать answertime, gametime или missesallowed. вам нужно сделать что-то вроде этого,

answertime = findViewById(R.id.<the id for this spinner>); 
gametime = findViewById(R.id.<the id for this spinner>); 
missesallowed = findViewById(R.id.<the id for this spinner>); 

перед вызовом setAdapter() на них.

также, вот еще одна проблема,

ArrayAdapter adapter2 = ArrayAdapter.createFromResource(this, R.array.GameMinutes, R.layout.custom_spinner_list); 
adapter.setDropDownViewResource(R.layout.custom_spinner); 
gametime.setAdapter(adapter); 

обратите внимание, что вы что-то построить в ссылку adapter2, то вы измените adapter и установите adapter в качестве адаптера для блесны. Это то что ты хочешь?

3

Вы должны инициализировать

Spinner answertime; 
Spinner gametime; 
Spinner missesallowed; 

В противном случае, следующая строка даст вам NullPointerException:

answertime.setAdapter(adapter); 
gametime.setAdapter(adapter); 
missesallowed.setAdapter(adapter); 

Для инициализации Spinner с, вы должны добавить что-то вроде этого после того, как вы называете setContentView:

answertime = findViewById(R.id.answertime); 
gametime = findViewById(R.id.gametime); 
missesallowed = findViewById(R.id.missesallowed); 
0

Также убедитесь, что для просмотра видимости установлено значение View.VISIBLE

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