오리엔테이션 변경 후 활동이 재창조되기 전에 의도 번들 데이터 변경

StackOverflow https://stackoverflow.com/questions/1206418

  •  05-07-2019
  •  | 
  •  

문제

내 활동을 시작하고 의도의 putextra () 함수를 사용하여 메시지를 전달하는 알림이 있습니다. 그런 다음 메시지가 활동의 OnCreate 기능에서 사용자에게 표시됩니다. 방향 변경으로 인해 응용 프로그램이 다시 시작되면 메시지가 여전히 의도의 번들 데이터에 있으므로 메시지가 다시 표시됩니다.

추가 데이터를 어떻게 제거 할 수 있습니까?

다음을 시도했습니다.

Bundle bundle = getIntent().getExtras();
if (bundle.getBoolean("showMessage")) {
    // ... show message that is in bundle.getString("message")
    // remove message
    bundle.remove("showMessage");
}

그러나 오리엔테이션이 변경된 후에도 여전히 메시지가 표시 될 것입니다. 사용 된 의도는 내가 변경 한 것이 아니라 원래의 의도 인 것 같습니다. 내가 찾은 유일한 해결 방법은 showmessage를 추가로 저장하는 것입니다.nSaveInstanceState(). 다른 방법이 있습니까? 아니면 이것이가는 길입니까?

도움이 되었습니까?

해결책

(간단한) 솔루션은 다음과 같습니다.

전화하는 대신

bundle.remove("showMessage");

나는 지금 사용한다

getIntent().removeExtra("showMessage");

예상대로 작동합니다. getintent (). getExtras ()는 참조가 아니라 사본을 반환하는 것 같습니다.

다른 팁

당신의 onSaveInstanceState() 접근 방식은 정답입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top