2012-07-05 75 views
0

我試圖爲spinners做適配器,但是我在answertime.setAdapter(adapter)上得到一個NullPointerException;爲什麼是這樣?我的數組是在strings.xml中,他們應該在哪裏? 這裏是完整的代碼。.setAdapter(adapter);給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

你永遠不會初始化answertimegametime,或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()他們。

也,這裏是另一個問題,那你構建的東西到參考adapter2

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

通知,那麼你修改adapter,並設置adapter爲適配器微調。那是你要的嗎?

3

需要初始化

Spinner answertime; 
Spinner gametime; 
Spinner missesallowed; 

否則,以下行會給你一個NullPointerException

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

要初始化Spinner S,你應該添加這樣的事情你叫setContentView後:

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

還要確保視圖可見性設置爲View.VISIBLE

相關問題