0

을 예로 들어 보겠습니다. First.class 에는 변수가 있습니다. String currentValue = "Red" 버튼이 Second.class (활동)로 연결됩니다. First.class (Activity)는 currentValue 변수가 텍스트 뷰에 표시됩니다. (현재, 레드).하나의 활동 변수를 다른 활동에서 어떻게 수정합니까?

우리가 버튼을 누르면 Second.class로 들어가고, First.class에서 변수를 수정하기위한 EditText 상자가 있습니다. 변경 사항을 확인하는 버튼도 있습니다. 마지막으로, 맨 아래에는 First.class '값 변수의 미리보기를 보여주는 TextView가 있습니다.

사용자가 Second.class EditText 상자에서 "Blue"를 입력하고 버튼을 누르면 인 텐트를 사용하지 않고 변수를 First.class에서 어떻게 변경하고 해당 활동으로 돌아갈 수 있습니까? 나는 Second.activity 안에 머물면서 거기에서 변화를 원한다.

확인 단추를 누르면 미리보기 TextView가 새로 수정 된 변수와 일치하도록 업데이트되어야합니다. 우리는 여전히 두 번째를보아야한다. 클래스, 나는 당신에게 상기시킨다. 사용자가이 시점에서 "뒤로"또는 "위로"누르는 경우 First.class로 돌아가서 First.class의 TextView가 변경된 것을 확인해야합니다.

Second.class가 First.class와 완전히 별개이며 액세스 할 수없는 경우 어떻게 First.class '변수를 수정합니까? (First.class는 Second.class의 계층 부모입니다.

+0

왜 '의도'를 사용하지 않으시겠습니까? 이것은 바로 그것이 무엇을위한 것입니다. 'Activity'에서 첫 번째'Activity'와'setResult()'에서'startActivityForResult()'를 사용합니다. – codeMagic

+0

"계층 적 부모"가 의미하는 바에 따라 second가 첫 번째 하위 클래스 인 경우 멤버 변수를 먼저 사용할 수 있고 두 번째 멤버 변수에 액세스 할 수 있어야합니다. – codeMagic

+0

Second.class는 First.class의 하위 클래스가 아닙니다. 또한 startActivity를 호출하면 사용자를 First.class 레이아웃으로 되돌려 보내겠다고 걱정했기 때문에 Intent를 사용하고 싶지 않았습니다. 원하지 않습니다.startActivityForResult() 및 setResult()를 살펴보고 다시 알려 드리겠습니다. –

답변

2

Second.class이 First.class에서 완전히 분리하고 액세스 할 수없는 경우 나 First.class '변수를 수정하려면 어떻게합니까?

당신은 또는 (더 중요한) 당신은이 작업을 수행하려고해서는 안 수 없습니다.

안드로이드 Activity은 "특별한 경우"클래스이며, 일반적으로 데이터. 즉 변경 자체에 포함 된 것으로 고려되어야한다 두 번째는 Activity이고 첫 번째는에 반영되어야합니다. 210은 어떤 형태의 전역 저장소 (예 : SharedPreferences)를 사용하여 유지되거나 Intent 또는 Bundle의 추가 항목을 사용하여 전달되어야합니다. SharedPreferences

단순히 첫번째 Activity 저장이 당신의 currentValue 처음으로 돌아 가기 전에 두 번째 Activity의 반대로 두 번째 Activity을 시작하기 전에. 첫 번째 ActivityonResume()SharedPreferences을 확인하고 필요한 경우 TextView을 업데이트하면됩니다.

codeMagic은 언급 한 바와 같이, 그러나, 단순히 onActivityResult(...) 통해 제 Activity로 다시 전달 될 수 있도록 두 번째 Activity에 처음부터 currentValue를 전달하고, 두 번째 종료하기 전에, 변경과 Bundle를 업데이트 할 수있는 것 startActivityForResult(...)를 사용하여 .

+0

'Intent'가 너무 명백하기 때문에'SharedPreferences'에 대해서 생각조차하지 않았습니다. .좋은 지적! – codeMagic

+0

나는 SharedPreferences와 함께 갈 것이라고 생각한다. 그 이유는, 실제로는 일부 원시 문자열이 아닌 객체에서 변수를 수정하려고합니다. First.class에 수정 가능한 변수가 들어있는 객체를 저장하게하려면 SharedPreferences에 저장하는 방법은 무엇입니까? SharedPreferences는 기본 요소 만 저장합니다. 그렇습니까? –

+0

답변을 찾은 것 같습니다. 그것은 단순한 파일 및 객체 I/O 스트림입니다. 나는 여기서 나머지를 생각해 볼 수 있다고 생각한다. SharedPrefs는 제가 공부하기에 아주 좋은 것이 었습니다 - 원시 데이터를 얻으려면 그것을 사용할 것입니다. :) –

관련 문제