GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Livro Google Android - Codigo da ViagemActivity dando problema


#1

Meu codigo:

public class ViagemActivity extends Activity {
private DatabaseHelper helper;
private EditText destino, quantidadePessoas, orcamento;
private RadioGroup radioGroup;
private int ano,mes,dia;
private Button dataChegadaButton, dataSaidaButton;
private String id;

@TargetApi(Build.VERSION_CODES.N)
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.cadastrodeviagem);

    Calendar calendar = Calendar.getInstance();
    ano = calendar.get(Calendar.YEAR);
    mes = calendar.get(Calendar.MONTH);
    dia = calendar.get(Calendar.DAY_OF_MONTH);

    dataChegadaButton = (Button) findViewById(R.id.dataChegada);
    dataSaidaButton = (Button) findViewById(R.id.dataSaida);

    //recuperando views
    destino = (EditText) findViewById(R.id.destino);
    quantidadePessoas = (EditText) findViewById(R.id.quantidadePessoas);
    orcamento = (EditText) findViewById(R.id.orcamento);
    radioGroup = (RadioGroup) findViewById(R.id.tipoViagem);

    //prepara o acesso ao banco de dados
    helper = new DatabaseHelper(this); 

    id = getIntent().getStringExtra(Constantes.VIAGEM_ID);
    if(id != null){
        prepararEdicao();
    }

}

private void prepararEdicao() {

    SQLiteDatabase db = helper.getReadableDatabase();
    Cursor cursor =
            db.rawQuery("SELECT tipo_viagem, destino, data_chegada, " +
                    "data_saida, quantidade_pessoas, orcamento " +
                    "FROM viagem WHERE _id = ?", new String[]{ id });
    cursor.moveToFirst();
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
    if(cursor.getInt(0) == Constantes.VIAGEM_LAZER){
        radioGroup.check(R.id.lazer);
    } else {
        radioGroup.check(R.id.negocios);
    }
    destino.setText(cursor.getString(1));
    dataChegada = new Date(cursor.getLong(2));
    dataSaida = new Date(cursor.getLong(3));
    dataChegadaButton.setText(dateFormat.format(dataChegada));
    dataSaidaButton.setText(dateFormat.format(dataSaida));
    quantidadePessoas.setText(cursor.getString(4));
    orcamento.setText(cursor.getString(5));
    cursor.close();
}


public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.viagem_menu, menu);
    return true;
}
public boolean onMenuItemSelected(int featureId, MenuItem item) {
    switch (item.getItemId()){
        case R.id.novo_gasto:
            startActivity(new Intent(this, GastoActivity.class));
            return true;

        case R.id.remover:
            //remover viagem do banco de dados
            return true;

        default:
            return super.onMenuItemSelected(featureId, item);
    }
}

public void salvarViagem(View view){
    SQLiteDatabase db = helper.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put("destino",destino.getText().toString());
    values.put("data_chegada", dataChegadaButton.getDrawingTime());
    values.put("data_saida", dataSaidaButton.getDrawingTime());
    values.put("orcamento", orcamento.getText().toString());
    values.put("quantidade_pessoas",
            quantidadePessoas.getText().toString());

int tipo = radioGroup.getCheckedRadioButtonId();

    if (tipo == R.id.lazer){
        values.put("tipo_viagem", Constantes.VIAGEM_LAZER);
    } else {
        values.put("tipo_viagem", Constantes.VIAGEM_NEGOCIOS);
    }

    //No metodo insert o primeiro parametro informa a tabela e o terceiro receberá o nome do ContentValues.
    long resultado = db.insert("viagem", null, values);

    //metodo retorna -1 se tiver dado erro ao inserir.
    if(resultado != -1 ){  
        Toast.makeText(this, getString(R.string.registro_salvo),
                Toast.LENGTH_SHORT).show();
    }else{
        Toast.makeText(this, getString(R.string.erro_salvar),
                Toast.LENGTH_SHORT).show();
    }
}
protected void onDestroy() {
    helper.close();
    super.onDestroy();
}

public void selecionarData(View view) {

}

}

==> A dataChegada e a dataSaida são de tipo int? No método prepararEdicao, o autor propõe atribui-las o valor de Date, como aconteceria isso? Aqui está pedindo um import para java.util.Date, mas fazendo isso o R.id.dataChegada e o R.id.dataSaida deixa de retornar um “int” e passa a retornar um “Date” dando erro la em cima desta vez. Agradeço se alguém puder contribuir de alguma forma que seja para solucionar isto.


#2

Pelo que estou vendo dataChegada e a dataSaida são Date mesmo e sobre o R.id.dataChegada, sempre vai ser um int, é a referencia do id dataChegada que vc criou no seu layout.