다음은 시나리오입니다. ListActivity가 있으며 항목을 길게 누르면 컨텍스트 메뉴가 나타납니다. 상황에 맞는 메뉴의 한 항목은 "삭제"이며 확인 상자 (및 AlertDialog)가 나타납니다. 사용자가 확인 대화 상자에서 확인을 누르면 실제로 삭제할 수 있도록 원래 선택한 항목의 ID를 알아야합니다.선택한 항목의 ID를 ListView에서 Android의 AlertDialog로 전달하는 방법은 무엇입니까?
흐름은 다음과 같습니다
This event: Causes Android to call: ----------------------------------------------------- Long press an item -> onCreateContextMenu() Select context menu item -> onContextItemSelected() call showDialog() -> onPrepareDialog() user clicks OK -> onClick()
인, onCreateContextMenu 및 onContextMenuSelected에서, 나는 ContextMenuInfo에서 선택한 항목의 ID를 얻을 수 있습니다. 그러나 onPrepareDialog에서 더 이상 해당 정보에 액세스 할 수 없습니다. OnPrepareDialog는 POSITIVE 버튼에 onClick 리스너를 설정하기 위해이 정보가 필요합니다.
나는 onContextMenuSelected 동안 선택한 항목의 ID를 내 활동 필드에 숨길 수 있다는 것을 알고 있습니다. 나는 그것을했고, 그것은 효과적이다. 그러나 그것은 또한 정말로 추악합니다. 그것이 소개하는 statefulness는 나를 불안하게 만듭니다. 활동에서 필드를 사용하는 것보다 그러한 정보를 전달하는 더 좋은 방법을 본 사람이 있습니까?
동의 ... 못 생겼지 만 작동 할 것입니다. –
안드로이드가 내 활동을 어떻게 부르는지에 대한 가정을하도록 강요합니다. 내 질문에 윤곽을 그리는 순서가 정확하다고 생각하지만, 약간의 차이를 놓친 것일 수 있으며 앞으로 Google의 변덕에 바뀔 수도 있습니다. 상태없는 코드를 작성하는 것은 매우 상태있는 코드를 작성하는 것보다 바람직합니다. –