1
我有一個Android活動,顯示一個填充了數據庫數據的微調器。該的onCreate()是列在這裏:Android - Spinner的數據消失
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.fuel_entry);
vehicleDataCursor = VehicleDataProvider.getVehicles();
startManagingCursor(vehicleDataCursor);
String[] from = new String[]{REGISTRATION_NO_COLUMN, DESCRIPTION_COLUMN};
int[] to = new int[]{R.id.vehicle_db_row_registration_number, R.id.vehicle_db_row_description};
vehicleAdapter =
new SimpleCursorAdapter(this, R.layout.vehicle_spinner_row, vehicleDataCursor, from, to);
vehicleSpinner = (Spinner) findViewById(R.id.spinner);
vehicleSpinner.setAdapter(vehicleAdapter);
mileageEntry = (EditText) findViewById(R.id.fuel_entry_mileage_edit_text);
fuelAmountEntry = (EditText) findViewById(R.id.fuel_entry_fuel_edit_text);
fuelEntryOkButton = (Button) findViewById(R.id.fuel_entry_ok_button);
fuelEntryOkButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
String registrationNumber = "";
Cursor cc = (Cursor)(vehicleSpinner.getSelectedItem());
if (cc != null)
{
registrationNumber = cc.getString(cc.getColumnIndexOrThrow(REGISTRATION_NO_COLUMN));
if(FuelUseDataProvider.addFuelUp(registrationNumber, Integer.parseInt(mileageEntry.getText().toString()), Integer.parseInt(fuelAmountEntry.getText().toString()), System.currentTimeMillis()) != DATABASE_INSERT_ERROR_CODE)
{
showMPGDialog(registrationNumber);
}
else
{
//do error handling
}
cc.close();
}
}
});}
它工作正常,但有一個小問題 - 當用戶在填寫表單和點擊fuelEntryOkButton,對話是如預期顯示,但微調是empited其數據。如果我刪除了cc.close();行,問題消失。很顯然,當我完成它時,我想關閉光標。我無法理解這一點 - 它是爲遊標提供數據的vehicleDataCursor,而不是cc。
任何想法爲什麼我的Spinner丟失其數據?
完美的感覺。它的工作原理 - 我可以使用vehicleDataSpinner獲取我需要的數據。 cc不是必需的。巴里 – barry 2011-04-10 07:17:39