2011-12-21 53 views
8

Estoy usando una función simple OnActivityResult, pero no me devuelve los resultados deseados.OnActivityResult no funciona (Android)

Por favor, mira mi código y dime dónde estoy haciendo mal.

public void OnClickFunction(View view) 
{ 
    Intent intent = new Intent(getApplicationContext(), Second.class); 
    startActivityForResult(intent, RESULT_OK); 

///  My actions. . . 
}  

Luego, en la segunda clase, he dado resultado como este:

Button.setOnClickListener(new OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      ValueOne = EditText.getText().toString().trim(); 
      if (ValueOne.equals(String.valueOf(Answer))) 
      { 
       Toast.makeText(getApplicationContext(), "Correct Answer", 0).show(); 
       Second.this.setResult(RESULT_OK, null); 
       Second.this.finish(); 
      } 
      else 
      { 
       Toast.makeText(getApplicationContext(), "Wrong Answer", 0).show(); 
      } 
     } 
    });  

Ahora que se acerca de nuevo a la first.class, desde donde se llamó la Intención:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 
//  if (requestCode == RESULT_OK) 
//  { 
     if (resultCode == RESULT_OK) 
     { 
          ///// MyActions. . . 
     } 
//  } 
}  

El depurador no está depurando esta función, por lo que los resultados deseados no están llegando.
¿Dónde estoy mal?

+0

¿Seguro de sus actividades está en la misma tarea? Eche un vistazo: http://stackoverflow.com/questions/4013586/onactivityresult-does-not-works-in-android – Ash

+0

¿Está seguro de que la condición if es verdadera y es pan comido la pantalla de mensajes de respuesta correcta? y también puedes usar setResult (RESULT_OK) en lugar de setResult (RESULT_OK, nulo); – Pratik

+0

Button.setOnClickListener ???? –

Respuesta

3

usted tiene que destruir la segunda actividad. Intenta presionar el botón Atrás. Soy capaz de ver todos los mensajes de registro en onActivityResult

Primera Actividad

public class FirstActivity extends Activity { 
/** Called when the activity is first created. */ 
int result = 100; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Intent i = new Intent(this,SecondActivity.class); 
    startActivityForResult(i, result); 
} 
@Override 
protected void onActivityResult (int requestCode, int resultCode, Intent data) { 
    Log.i("H", "RequestCode:" + requestCode); 
    Log.i("H", "ResultCode:" + resultCode); 
} 
} 

SecondActivity

public class SecondActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    setResult(RESULT_OK); 
    Log.i("S","Exiting Second Activity"); 
} 
} 
1

en la clase Fuente:

int activity=1; 
Intent i=new Intent(Sourceclass.this,destination.class); 
startActivityForResult(i,activity); 

En la clase de destino:

Intent i=new Intent(); 
     setResult(RESULT_OK,i); 
    finish(); 

En onActivityResult de Clase Fuente:

public void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    if (resultCode == RESULT_OK) 
    { 
        if(requestCode==1) 
      { 
       Log.e("check","check"); 

      } 
    } 

} 
+1

@Abhi ... no está trabajando ... – Noman

+0

usaste mi código como es @Noman – Abhi

+2

@abhi .. sí, edité mi código de acuerdo con tu respuesta, pero el problema es que todavía hay – Noman