리소스에 대한 안드로이드 및 저장/로딩 환경 설정 - 일관성을 달성하는 방법은 무엇입니까?

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

문제

나는 응용 프로그램을 작성하고 있으며 특정 리소스와 관련된 선호도를 지속적으로 저장하고로드하는 데 도움이 필요합니다. 예를 들어 보겠습니다.

스피너 10 명이 있다고 가정 해 봅시다. 그들은 모두 동일한 기능이지만 다른 의미를 가지고 있습니다. 그들은 동일한 기능을 가지고 있기 때문에 나는 그것들을 동일하게 바인딩 할 수 있습니다. onItemSelectedListener, 그런 다음 선택한 값을 처리합니다.

글쎄, 각 스피너의 환경 설정을 저장하고 싶다면 어떻게해야합니까? 예를 들어, 스피너 값이 선택되면 키 "스피너를 저장합니다. 무엇"= some_data.

문제는 - 무엇을 해야하는지입니다 무엇 이다? 청취자는 다음과 같은 서명을 가지고 있습니다.

public void onItemSelected(AdapterView parent, View v, int position, long id)

위치와 ID는 각 스피너에 비해 설정하므로 여기서 도움이되지 않습니다.

그러나이 경우 스피너 자체 인 부모는 필요한 모든 정보를 가져야합니다. 각 스피너의 리소스 ID를 얻고 키 "스피너 ID"를 사용하여 선호도를 저장하기 위해 Parent.getId ()를 사용하려고 시도했지만 앱에 더 많은 리소스를 추가 할 때 이러한 리소스 ID가 변경되므로 내 설정이 재설정됩니다. 키가 변경됩니다.

여기서 어떻게해야하나요? 간단한 parent.getName () 함수를 찾을 수없는 것 같습니다. 각 스피너의 일관된 이름을 반환 할 수 있습니다.

고맙습니다.

도움이 되었습니까?

해결책

그만큼 getId 내가 아는 유일한 것은보기에 대한 고유 한 참조를 가지고 있지만, 다음과 같이 뷰는 다음 앱 빌드에서 동일한 ID가 없을 수 있습니다.

상자에서 사용할 수있는 최고의 인간 읽을 수있는 식별자는 다음과 같습니다. getPrompt, 스피너 프롬프트로 설정 한 모든 것을 보여줄 것입니다. 그것은 확인자가되어야하지만, 프롬프트 텍스트를 수동으로 변경하면 파손되기 쉽습니다.

그러므로 가장 중단 방법은 일반 컨테이너에 식별자를 지정하는 것입니다. tag - 모든 견해에 포함되어 있습니다.

String myIdentifier = (String) parent.getTag();

이미 다른 것에 태그를 사용하고 있다면 1.6+ API에는 여러 태그를 지정하고 인덱스를 통해 액세스 할 수있는 기능이 포함되어 있습니다. 이전 API 버전을 지원 해야하는 경우 항상 태그를 식별자와 원래 태그를 모두 포함하는 래퍼 객체로 설정할 수 있습니다.

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