Android : 활동의 반환을 포착합니다
-
19-08-2019 - |
문제
새로운 활동을 시작하는 것에 관한 질문이 있습니다. 이것으로 귀결됩니다. 보기에 3 개의 탭이 있습니다
A) contains gMap activity
B) camera activity
C) some random text fields.
요구 사항은 애플리케이션이 초상화 모드로 실행됩니다.
3 개의 탭 모두 카메라 미리보기 표면 (B)을 제외하고 예상대로 작동합니다. 90도 회전합니다. 그들은 그것을 올바르게 만드는 방법 만 앱을 내 모든 탭을 던지는 풍경으로 설정하는 것입니다.
내 해결책은 이것입니다. 교체하십시오
예외가없는 정기적 인 활동을 가진 내 카메라 활동
Intent i = new Intent(this,CameraActivity.class);
startActivity(i);
이것은 내 camartactivity를 시작합니다. 그리고 그것은 잘 작동합니다. 선형 레이아웃을 수행하고 실제 탭처럼 보이는 3 개의 이미지를 포함시켜야하므로 화면을 조경으로 회전시키고 시각을 초상화로 유지하면서 탭 작동을 모방 할 수 있습니다. 사용자는 이미지 중 하나 (버튼)를 클릭하여 다음 탭을 표시 할 수 있습니다. 이것은 내 문제입니다. 탭에서 '카메라 활동'을 종료해야합니다. 탭에서 '빈 활동'으로 돌아와서 내 이미지에서 거부 된 탭을 클릭하도록 해석해야합니다.
가장 중요한 것은 돌아올 때 탭 아래의 빈 (검은 색) 페이지로 돌아갑니다 ( '비어 있기 때문에). 리턴 이벤트를 활동을 불렀던 페이지로 돌아간 다음 어떤 작업을 수행했는지 확인하려면 어떻게해야합니까?
카메라 활동에서 벗어나기 위해 클릭중인 가짜 탭 (이미지)에 응답 할 수있는 onclicklistener를 설정할 수 있습니다. 종료시 탭이 업데이트되어 반환되는 곳입니다. 제안이 있습니까?
감사,
해결책
나는 당신이 원하는대로 행동하도록 작업 라운드를 해결하는 방법에 대답하는 데 집중할 것입니다.
한 활동에서 수행 된 동작을 다른 활동 내에서 캡처하려면 세 단계가 필요합니다.
2 차 활동 ( '카메라 활동')을 사용하여 하위 활동으로 시작하십시오. startActivityForResult
대신에 startActivity
.
Intent i = new Intent(this,CameraActivity.class);
startActivityForResult(i, STATIC_INTEGER_VALUE);
사용자가 다른 탭 이미지를 클릭 할 때 활동을 닫지 말고 서적 (카메라 활동) 내에서 새로운 의도를 만들고 Extras 번들을 사용하여 부모 앱으로 돌아올 때 표시 할 탭의 색인을 포함해야합니다. . 부모 전화로 다시 전달합니다 setResult
전화하기 전에 finish
카메라 활동을 닫으려면.
resultIntent = new Intent(null);
resultIntent.putExtra(PUBLIC_STATIC_STRING_IDENTIFIER, tabIndexValue);
setResult(Activity.RESULT_OK, resultIntent);
finish();
마지막 단계는 호출 활동에 있습니다. onActivityResult
카메라 활동에서 콜백을 듣습니다. 표시해야 할 탭의 색인을 결정하기 위해 반환 된 의도에서 추가 정보를 얻으십시오.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case (STATIC_INTEGER_VALUE) : {
if (resultCode == Activity.RESULT_OK) {
int tabIndex = data.getIntExtra(PUBLIC_STATIC_STRING_IDENTIFIER);
// TODO Switch tabs using the index.
}
break;
}
}
}