0

두 가지 활동이 있습니다. 활동 전자 활동 B.데이터 손실없이 이전 활동으로 돌아 가기

나는 활동 B.

에 전달하지만 활동 A와 B, 활동을 다시 시작을 통과하려고 할 때 내가 글고에서 데이터가 손실 활동 A. 내부 데이터는 EditText의이 . A에서 B로 데이터를 전달하려면 어떻게해야합니까? 여기

활동 B. 내 코드입니다 그러나

 Intent afectarQuotaSocios = new Intent(B.this,A.class); 
    afectarQuotaSocios.putExtra("ArrayListIdSocios",al); 
    afectarQuotaSocios.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(afectarQuotaSocios); 

어떤 아이디어를 작동하지 않는 이유는 무엇입니까? 도움 주셔서 감사합니다.

답변

2

당신은 보조 Activity를 시작하는

startActivityForResult(Intent intent, int requestCode); 

를 사용해야합니다. 그 슈퍼 활동 활동에서 결과를 반환하기 위해 당신의 경우, 그 B.

처럼, 방법

setResult();

를 호출하고 콜백 방법, superactivity에서 반환 된 결과를 얻을 수 onActivityResult()

+0

안녕하세요 지트을 활동가로 활동 B에서 (ArrayList를 알) 데이터를 전달하기 위해, 나는 의도를 필요로이 작업을 수행 할 필요가 같은 시간이다. 답장을 보내 주셔서 감사합니다. 그리고 B 액티비티로 돌아 가야한다면 변경 사항없이 내부에있는 listview가 필요합니까? 당신의 솔루션은 잘 작동합니다. 하지만 A와 B에게이게 필요해. 내가 어떻게 할 수 있니? –

+0

onCreate 메서드에서 상수로 유지하려는 코드를 작성하고 onStart 또는 onRestart 메서드의 activity에서 반환 할 때 업데이트 할 코드를 작성합니다. – jeet

0

시작한 Activity의 onCreate 메서드를 호출 할 새 Activity가 시작되고 다시 시작됩니다. 똑같은 상태를 유지하기 위해 무엇을하고 싶은지 묻는 것입니다.

당신이 찾고있는 행동을 얻기 위해서 startActivityForResult을보십시오.

+0

하지만 ..... –

0

Manifest 파일에서이 태그를 Activity A android:launchMode="singleInstance"에 추가하면 onCreate가 Activity A에 호출되지 않으므로 데이터가 새로 고쳐지지 않습니다.

+0

'OnCreate()'가 한 번 호출되면 (app.가 시작될 때), 나머지 코드에 대해'NewIntent()'메소드가 호출되어 데이터를 다시로드 할 수 있습니다. – Anuj

1

당신은 당신이 당신의 결과를 전달할 수있는 B 작업에

그런 다음 startActivityForResult 방법을 사용해야합니다 :

resultIntent = new Intent(null); 
resultIntent.putExtra(YOUR_CONSTANT_TEXT_IDENTIFIER, textValue); 
setResult(Activity.RESULT_OK, resultIntent); 
finish(); 

을 그리고 당신은 onActivityResult 방법에 부록 A 작업에 가치를

0

새 의도 객체를 만들고 setResult (...) 메서드 호출을 통해 다시 전달합니다. 그런 다음 finish() 메서드를 호출하여 컨트롤을 부모 작업으로 되돌립니다.

Intent returnIntent = new Intent(); 
    returnIntent.putExtra("SELECTVALUE",book); 
    setResult(RESULT_OK,returnIntent);   
    finish(); 
... 

이전 활동으로 돌아갑니다.

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
    switch(requestCode) { 
    case BOOK_SELECT: 
     if (resultCode == RESULT_OK) { 
      String name = data.getStringExtra("SELECTVALUE"); 
      System.out.println("Name"+name); 
      } 

} }

관련 문제