2011-12-21 4 views
8

Я использую простую функцию OnActivityResult, но он не возвращает мне желаемые результаты.OnActivityResult не работает (Android)

См. Мой код и скажите, где я делаю неправильно.

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

///  My actions. . . 
}  

Тогда во втором классе, я поставил Результат, как это:

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(); 
      } 
     } 
    });  

Теперь возвращаясь к first.class, откуда был назван Намерение:

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

Отладчик не отлаживает эту функцию, поэтому желаемые результаты не наступают.
Где я делаю неправильно ???

+0

Вы уверены, что ваша деятельность в одной и той же задачи? Посмотрите: http://stackoverflow.com/questions/4013586/onactivityresult-does-not-works-in-android – Ash

+0

вы уверены, что условие if истинно, и это тост правильного отображения сообщений ответа? и вы также можете использовать setResult (RESULT_OK) вместо setResult (RESULT_OK, null); – Pratik

+0

Button.setOnClickListener ???? –

ответ

3

Вы должны уничтожить вторую деятельность. Попробуйте нажать кнопку возврата. Я могу видеть все сообщения журнала в onActivityResult

Первая активность

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

в источнике Класс:

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

В классе назначения:

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

В OnActivityResult источниковедения Класс:

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

      } 
    } 

} 
+1

@Abhi ... не работает человек .. – Noman

+0

вы использовали мой код, поскольку он @Noman – Abhi

+2

@abhi .. да, я отредактировал мой код в соответствии с урским ответом, но проблема в том, что есть еще – Noman

Смежные вопросы