Я работаю с деятельностью, где он показывает AlertDialogFragment с двумя вариантами, каждый из которых открывает новую активность, когда я выбираю первый вариант я использую этот код:Почему не работает onActivityResult(), когда я закрываю второе действие?
switch (which){
case 0:
//Intent para registrar una compra
Intent compra=new Intent(getActivity(),CompraActivity.class);
compra.putExtra("NumeroTarjeta", tarjetasCredito.getNumeroTarjeta());
compra.putExtra("SaldoDisponible",tarjetasCredito.getSaldoDisponible());
startActivityForResult(compra, RESULT_CORRECT);
break;
case 1:
//Intent para registrar pago
Intent pago=new Intent(getActivity(),PagoActivity.class);
pago.putExtra("NumeroTarjeta", tarjetasCredito.getNumeroTarjeta());
startActivityForResult(pago, RESULT_CORRECT);
break;
}
RESULT_CORRECT = 1
Это работает нормально, но проблема возникает, когда я устанавливаю результат во втором действии, onActivityResult()
, похоже, не работает.
Что я хочу сделать, это запустить метод, который изменяет данные ListView. В чем может быть проблема? Я уже пробовал некоторые вещи, но ничего не работает, как ожидалось.
Вот код от второй деятельности:
public void AgregarCompra(View view) {
try{
String lugarCompra=lugar.getText().toString();
double totalCompra=Double.valueOf(total.getText().toString());
if(isDataCorrect(lugarCompra,totalCompra)){
if(SaldoDisponible >= totalCompra){
DB.SQLFields="NumeroTarjeta,Lugar,Total,Fecha,TipoMovimiento";
DB.SQLInsert="INSERT INTO "+TABLAS.HISTORIAL_CREDITO+"("+DB.SQLFields+") VALUES ('"+NumeroTarjeta+"','"+lugarCompra+"',"+totalCompra+",'"+ fechaCompra +"','Compra'"+");";
DB.db.execSQL(DB.SQLInsert);
DB.SQLUpdate="UPDATE "+TABLAS.TARJETAS_CREDITO+" SET SaldoDisponible="+(SaldoDisponible-totalCompra)+"";
DB.db.execSQL(DB.SQLUpdate);
DB.db.close();
Toast.makeText(this,"Exito al guardar.",Toast.LENGTH_SHORT).show();
Intent returnIntent=new Intent();
setResult(RESULT_OK,returnIntent);
finish();
}else{
ErrorDialogFragment errorDialog=new ErrorDialogFragment();
errorDialog.show(getFragmentManager(),"Error");
}
}else{
Toast.makeText(this,"Datos vacios.",Toast.LENGTH_SHORT).show();
}
}catch (Exception ex){
Log.e(LOG_TAG,"Error de SQLite: "+ex.getMessage());
Toast.makeText(this,"Error al insertar.",Toast.LENGTH_SHORT).show();
}
}
Как вы можете видеть, я уже отправить результат в методе, прежде чем я закончил. Это метод коррекции в моей первой деятельности:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==RESULT_CORRECT){
if(resultCode==RESULT_OK){
RefreshList();
mAdapter.notifyDataSetChanged();
}
}else{
}
}
Кроме того, странно, что даже в LogCat, нет никаких проблем, или какая-то ошибка, все работает хорошо, за исключением метода, когда вторая активность закрывается.
Для вашей информации используйте только код в своем коде - это хорошая практика, я не понимаю имена переменных =) –
Установите точки останова в 'onActivityResult' в стартовой строке, в' AgregarCompra' on 'setResult (RESULT_OK, returnIntent);» линия. И проверить onActivityResult, началось ли это после AgregarCompra или нет –
Я знаю, что это плохая практика смешать испанский и английский языки, но иногда я забыл код на английском языке только ха-ха, но спасибо за наблюдение. @KirillShalnov –