我正在尝试从数据库中将一些数据提取到微调器中,但它显示以下错误:-
07-21 05:54:42.450: E/AndroidRuntime(11918): FATAL EXCEPTION: main
07-21 05:54:42.450: E/AndroidRuntime(11918): Process: com.example.teste1, PID: 11918
07-21 05:54:42.450: E/AndroidRuntime(11918): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.teste1/com.example.teste1.MainActivity}: java.lang.NullPointerException
07-21 05:54:42.450: E/AndroidRuntime(11918): Caused by: java.lang.NullPointerException
07-21 05:54:42.450: E/AndroidRuntime(11918): at com.example.teste1.MainActivity.loadSpinnerData(MainActivity.java:79)
07-21 05:54:42.450: E/AndroidRuntime(11918): at com.example.teste1.MainActivity.onCreate(MainActivity.java:32)
第 79 行是:- spinner.setAdapter(dataAdapter);
第 32 行是:- loadSpinnerData();
我已经使用以下方法检查了 dataAdapter 是否为空:-
System.out.println(dataAdapter.getItem(5).toString());
但它显示第 5 个索引处的值,这意味着 dataAdapter 不为 null。
这是我的 MainActivity 类:-
public class MainActivity extends Activity implements OnItemSelectedListener {
Button btnDisplay;
ImageButton btnAdd;
Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnAdd = (ImageButton) findViewById(R.id.btnAdd);
btnDisplay = (Button) findViewById(R.id.btnDisplay);
spinner = (Spinner) findViewById(R.id.spinner1);
// Loading spinner data from database
try {
loadSpinnerData();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Spinner click listener
spinner.setOnItemSelectedListener(this);
MyLayoutOperation.add(this, btnAdd);
MyLayoutOperation.display(this, btnDisplay);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
/**
* Function to load the spinner data from SQLite database
* @throws IOException
* */
private void loadSpinnerData() throws IOException {
// database handler
DBHelper db = new DBHelper(getApplicationContext());
// Spinner Drop down elements
List<String> products = db.getAllProducts();
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, products);
// Drop down layout style - list view with radio button
dataAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//For testing purpose only
System.out.println(dataAdapter.getItem(5).toString());
// attaching data adapter to spinner
spinner.setAdapter(dataAdapter);
}
最佳答案
你的微调器似乎为空。尝试两件事:-
1) 检查您是否确实创建了一个 ID 为 spinner1
的 spinner
。
2) 如果您已经创建了微调器,则尝试通过对其执行 Sysout 来检查其中的值。
关于java - 填充微调器时 dataAdapter 显示为 null 但它包含值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24862713/