2016-08-29 3 views
1

는 잘 모르겠어요 작동하지만 내가 할 경우 TwoActivity를 시작 OneActivity에서 다음을하지 않습니다 : 위의 코드와 아무 일도 발생하지 않습니다 onActivityResultOneActivity에서 재정의 한 후에 startActivityForResult 및 setResult이이 동작을 예상되는 경우

Intent resultIntent = new Intent(); 
resultIntent.putExtra(SOURCE, TAG); 
setResult(RESULT_OK, resultIntent); 

finish(); 

. onActivityResult도 호출하지 않는 것 같습니다. 그러나 RESULT_OK0으로 변경하면 작동합니다.

예상 되나요? 다른 사람이 그것을 경험 했습니까?

답변

6

startActivityForResult 방법의 문서 정의를 확인하십시오. 그것은 말합니다 :

requestCode int : 0 이상인 경우이 코드는 활동이 종료 될 때 onActivityResult()에 반환됩니다.

요청 코드는 0보다 커야합니다. RESULT_OK 응답 코드의 값을 확인하면 -1입니다. 요청 코드는 결과 코드와 같지 않습니다. 요청 코드는 결과가 필요한 요청을 식별하는 데 사용되며 결과 코드는 요청이 성공했는지 여부를 알려줍니다.

+0

뜨아, 어떤 바보 같은 실수 내 부분에! 그건 의미가 있습니다. 감사. – tvalent2

+0

@ tvalent2 문제 없으니 기꺼이 도와주세요 =). – josemgu91

2

당신은 두 개의 서로 다른 개념을 혼동 :

  • requestCode (startActivityForResult에 두 번째 매개 변수)를 사용하면 그 양의 정수가 될 수 지정 된 고유 한 ID입니다.
  • resultCodesetResult documentation

에서 볼 수 있듯이 (setResult의 첫 번째 매개 변수) 당신은 당신의 onActivityResult 수신주의거야 활동 클래스의 상수 중 하나 여야 모두 requestCode 당신이 startActivityForResult로 통과 당신이 setResult에서 설정 한 resultCode은 - 당신이의 오른쪽 숫자를 비교할 수 있도록 당신의 onActivityResult

+0

와우, 무슨 실수 야. 감사! – tvalent2

0

이 샘플 코드를 확인하십시오 :

을 16,

MainActivity :

public class MainActivity extends Activity { 
    TextView textView1; 
    Button button1; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     textView1=(TextView)findViewById(R.id.textView1); 
     button1=(Button)findViewById(R.id.button1); 
     button1.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       Intent intent=new Intent(MainActivity.this,SecondActivity.class); 
       startActivityForResult(intent, 2);// Activity is started with requestCode 2 
      } 
     }); 
    } 
// Call Back method to get the Message form other Activity 
    @Override 
     protected void onActivityResult(int requestCode, int resultCode, Intent data) 
     { 
       super.onActivityResult(requestCode, resultCode, data); 
        // check if the request code is same as what is passed here it is 2 
        if(requestCode==2) 
         { 
          String message=data.getStringExtra("MESSAGE"); 
          textView1.setText(message); 
         } 
    } 
} 

다음 SecondActivity :

public class SecondActivity extends Activity { 
    EditText editText1; 
    Button button1; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_second); 
     editText1=(EditText)findViewById(R.id.editText1); 
      button1=(Button)findViewById(R.id.button1); 
      button1.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View arg0) { 
        String message=editText1.getText().toString(); 
        Intent intent=new Intent(); 
        intent.putExtra("MESSAGE",message); 
        setResult(2,intent); 
        finish();//finishing activity 
       } 
      }); 
    }