2015-01-01 3 views
-2

모두뒤로 탐색하는 동안 활동이 중단됩니다.

서로 종속적 인 3 개의 화면 사이에서 탐색을 수행하고 있습니다.

활동 A에 테이블 행 목록이있는 테이블이 있습니다. 각 행은 테이블 행에서 데이터를 가져와 다음 화면으로 이동하는 onclick 리스너 이벤트가 있습니다. Activity B

Activity B는 Intent에서 데이터를 읽는 것으로 시작하여 해당 이미지 & 데이터 등을 가져오고 레이아웃을 작성합니다. In은 편집 텍스트에서 데이터를 읽고 Activity C로 전달되는 버튼을 가지고 있습니다.

활동 C는 또한 Intent의 데이터를 기반으로 레이아웃을 작성합니다.

매니 페스트 파일에서 상위 활동 구성을 사용하여 이러한 활동을 탐색했습니다.

이제 Activity C에서 Activity B의 내비게이션을 할 때, 컨트롤이 부모에서 하위가 아닌 상위에서 상위로 오는대로 Intent에서 데이터를 찾을 수 없어 충돌이 발생합니다.

나는 활동 B의 onCreate 기능이 다시 실행된다는 것을 알고 있습니다. 그래서 나는 활동 B의 onPause()와 onResume() 메소드를 유지하여 재실행을 보류했다. 그러나 운이 없다.

이런 종류의 시나리오를 처리하는 방법에 대해 조언 해 줄 수 있습니까?

편집 :

활동 B :

protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.edit_activity); 
getActionBar().setDisplayHomeAsUpEnabled(true); 
source_activity = this.getIntent().getStringExtra("source_activity"); 
Bundle b = this.getIntent().getExtras(); 
if(b!=null) 
    DashBoardDisplay_l = b.getParcelable("obj"); 
Name_ref=DashBoardDisplay_l.getName(); 
} 

활동 C : 활동 B는 활동 B에 돌아 오는 동안 그래서 이전 화면 활동 A.에서 오는 약간의 의도가 포함되어

protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
overridePendingTransition(R.anim.activity_open_translate,R.anim.activity_close_scale); 
setContentView(R.layout.point_log_activity); 
Intent intent = getIntent(); 
String YourtransferredData = intent.getExtras().getString("ref_name"); 
Log.d(TAG, "ref name "+YourtransferredData); 
Name=YourtransferredData; 
Log.d(TAG, "name value "+Name); 
getActionBar().setDisplayHomeAsUpEnabled(true); 
new BackEndJob().execute(); 
} 

액티비티 C에서 인 텐트에서 널 포인터 예외로 인해 데이터를 찾을 수 없습니다.

Dalija가 권고 한 Savedinstance를 사용하여 다시 탐색 스택에 표시 할 항목을 표시하는 옵션이 있습니다.

+0

에서보다 자세한 내용을보실 수 있습니다. – Shvet

+0

코드 스 니펫과 로그 추가 – VicJordan

답변

0

귀하의 설명을 보면 활동 B에 대한 뒤로 탐색을 방지해야합니다. 사용자가 활동 C에서 버튼을 다시 누르면 그 다음 활동 B를 완료해야하는 경우라면이 활동 C.로 제어를 통과 할 때 그래서 활동 A.로 돌아갈 것

... 
    this.startActivity(intent); // start Activity C 
    finish(); 
} 

마무리 활동이 활동 B를 제거합니다 네비게이션 스택에서 제거하고 활동 B를 완전히 파괴하여 네비게이션 문제를 해결합니다.

그러나 활동 B로 돌아가려면 활동 B에서 onSaveInstanceState()onRestoreInstanceState()을 사용하여 상태를 저장해야합니다.

Recreating Activity

당신이 활동 C를 시작

는 활동 B가 중지됩니다. 이 시점에서 시스템은 자원을 정리해야 할 경우 언제든지 활동 B를 파기하기로 결정할 수 있습니다. 당신은 그 과정에 어떤 영향도 미치지 않으며 그것을 막을 수 없습니다.

당신은 우리가 당신을 안내 할 수 있습니다 후 코드를보기 바랍니다 Activity Lifecycle

+0

답장을 보내 주신 모든 분들께 감사드립니다. 이 조언을 시도하고 되돌릴 것입니다. – kavuru

관련 문제