2013-12-20 8 views
0

다른 활동을 시작한 주 활동이 있으며 주 활동에는 마지막 활동에서 정보를 받아야합니다. 그러나 내가 마지막 활동을 마칠 때 나는 주 활동에 두 번째가 아니라 주저하지 않습니다. 새로운 것을 시작하지 않고 어떻게 거기에 갈 수 있습니까? 고마워, Vinzenz :정보를 보내 이전 활동으로 돌아 가기 방법

는 여기의 일부입니다 : (editet)

미안하지만, 나는 그것을 얻지 않는다. 내가 가진 다른 하나를 시작 번째 활동에서

@Override 
public void onClick(View arg0) { 
    Intent i = new Intent(getApplicationContext(), SecondActivity.class); 
    startActivityForResult(i, currentxyzIndex);   
} 

:

@Override 
public void onClick(View arg0) { 
    Intent i = new Intent(getApplicationContext(), ThirdActivity.class); 
    startActivityForResult(i, 100); 
    finish();   
} 

을이 일에 내가 첫 번째로 돌아가려면 내 MainActivity에서 나는 두 번째 하나를 시작

@Override 
public void onItemClick(AdapterView<?> parent, View view, 
     int position, long id) { 

    int xyzIndex = position; 

    Intent in = new Intent(getApplicationContext(), 
        MainActivity.class); 

    in.putExtra("xyzIndex", xyzIndex); 
    setResult(100, in); 

    finish(); 
} 
+0

두 번째 활동 인 –

+0

에서 finish를 호출 할 수 있습니다. 그런 다음 매번 열려고 할 때마다 닫히는 원인이됩니다. – vinzzenzz

+0

'finish()'는 호출중인 활동을 종료합니다. 귀하의 질문은 따라하기가 정말 어렵습니다. (예 : 활동 A, 활동 B, 활동 C) 질문을 편집하고 명시된 상태를 명시하고 (예 : 앱이 활동 A에서 열리고 단추를 클릭하면 활동 B를 열어야합니다. B에서 클릭 한 다른 버튼, B를 닫고 A로 돌아 가야 함). – ataulm

답변

2

당신은 SecondActivitystartActivityForResult()로를 시작하고 MainAcitvity onActivityResult()에 오버라이드 (override) 할 필요가 있습니다. 이 방법을 사용하면 SecondActivity에서 finish()를 호출하면 MainActivity의 onActivityResult()이 호출됩니다. onActivityResult를의 서명은 SecontActivity에 finish()하기 전에, 당신이 setResult(int, Intent)를 호출하는 경우

protected void onActivityResult(int requestCode, int resultCode, 
      Intent data) 

가, 마지막 하나는 내가 지금 당신의 질문을 이해 생각 onActivityResult

+0

미안하지만. 달리지 말아. 내 editet quistion을 읽고 다시 도와주고 싶지 않을까. 많이 감사합니다. – vinzzenzz

+0

startActvityForResult 및 onActivityForResult에 대한 설명서를 읽었습니까? – Blackbelt

+0

나는 그렇다고 생각한다. :/ – vinzzenzz

1

의 파라미터 데이터가 될 것입니다하지만 당신은 그것을 수정해야 그것을 더 분명하게해라. 나는 당신이하려고하는 것을 요약 할 것입니다.

세 가지 활동이있다 : A, B 및 활동 A의 C.

, 당신은 어떤 버튼을 누르거나, 클릭하면 startActivityForResult()로 활동 B 열립니다 볼 수 있습니다.

활동 B에는 클릭 또는 클릭하면 활동 C가 startActivityForResult()과 함께 열립니다.

는 활동 C에서는 blackbelt가 말했듯이, 당신이 당신의 활동에 onActivityResult(int, int, Intent)을 사용해야 활동 A.


로 복귀하기를 바라고, 일부 데이터를 결과 집합을 설정하고 마무리를 호출합니다.

onClick() { 
    startActivityForResult(new Intent(this, ActivityB.class), currentxyzIndex); 
} 

@Override 
onActivityResult(int requestCode, int resultCode, Intent data) { 
    // this is the data that comes back from Activity B when Activity B calls finish() 
    // do as you need 
} 

활동 B : 당신이로

onClick() { 
    startActivityForResult(new Intent(this, ActivityC.class), 100); 
    // do not call finish here! 
} 

@Override 
onActivityResult(int requestCode, int resultCode, Intent data) { 
    // this is the data that comes back from Activity C when Activity C calls finish() 

    // set the data as the result 
    setResult(...); 

    // then you can finish 
    finish(); 
} 

활동 C는, 내가 믿는이, 활동 A와 활동 B를

활동가, 즉 startActivityForResult()를 사용하는 모든 활동에 있어야합니다 .

귀하의 앱 아키텍처에서이 작업을 수행하도록 요구하는 냄새가납니다. 도메인에 대한 정보와 각 활동의 목적 (각 사용자가 무엇을 대표하는지)을 문제로 설명하면 아마도 재구성 될 수 있습니다.

관련 문제