마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

startActivityForResult 관련 질문 드립니다 (코드 있습니다!)

0 추천

RecipeA.java

public void onTimerClicked(View v) {
    Intent intent = new Intent(getApplicationContext(), TimerActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivityForResult(intent, 0);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode == RESULT_OK) {
        RecipeA.mViewPager.setCurrentItem(6);
    }
    else
        RecipeA.mViewPager.setCurrentItem(4);
}

TimerActivity.java

public class MyCountDownTimer extends CountDownTimer {
    public MyCountDownTimer(long starttime, long interval) {
        super(starttime, interval);
    }
    @Override
    public void onFinish() {
        Intent intent = getIntent();
        tvtimer.setText("시간종료");
        setResult(RESULT_OK, intent);
        finish();
    } ...

타이머의 버튼을 누르면 자동으로 시작되고,

그 타이머의 시간이 종료되면 액티비티가 종료되며 setCurrentItem(6)이 되도록 하고 싶은데

resultCode == RESULT_OK가 아니어서 그런지

타이머 액티비티가 종료되기도 전에, 심지어 타이머 버튼을 누르자 마자 

setCurrentItem(4)로 이동합니다 ㅠ.ㅠ

 

타이머가 종료될 때 setCurrentItem(6)이 되게 하려면 어떻게 수정해야 할 지 조언 부탁드립니다! 

 

샐리 (440 포인트) 님이 2016년 9월 30일 질문
샐리님이 2016년 9월 30일 수정

2개의 답변

0 추천
 
채택된 답변
requestCode가 0이 맞는지도 확인해 보시는게 좋을것 같습니다.

보니까 requestCode를 0으로 요청하는데

onActivityResult 함수에는 requestCode를 확인하지 않네요.
Development Guy (70,570 포인트) 님이 2016년 9월 30일 답변
샐리님이 2016년 9월 30일 채택됨
0 추천
위소스만 봐서는 문제가 없습니다.

타이머 엑티비티에 해당 엑티비티를 종료 시키는 다른 코드가 있을겁니다.

제대로된 플로우만 따른다면 타이머 설정값이 잘못 되었더라도 4페이지로 이동할 일이 없습니다.
ThisPlus (46,920 포인트) 님이 2016년 9월 30일 답변
...