2011-04-09 1 views
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(); 문제가 사라집니다. 분명히 커서를 끝내면 커서를 닫고 싶습니다. 나는 이것을 이해할 수 없다 - 이것은 cc가 아닌 커서 데이터를 제공하는 vehicleDataCursor이다.

내 Spinner가 데이터를 잃어 버리는 이유는 무엇입니까?

답변

1

필자가 이해하는 한,이 작업을 수행 할 때 단순히 Spinner와 관련된 커서에 대한 참조를 얻는 것입니다. 즉, vehicleDataCursor에 대한 참조입니다.

cc을 닫으면 효과적으로 vehicleDataCursor을 종료합니다.

의미가 있습니까?

+0

완벽한 감각. 그리고 그것은 작동합니다 - 나는 vehicleDataSpinner를 사용하여 필요한 데이터를 얻을 수 있습니다. 참조는 필요하지 않습니다. 배리 – barry