2014-06-22 3 views
0

내 amatuer 질문에 대해 유감이지만 Android는 물론 Java에서도 처음입니다.다른 소스 파일에있는 객체에 액세스하는 방법

내 appwidget에 listview 레이아웃이 있습니다. 목록보기 항목은 widgetservice.java에서 처리됩니다. 여기에서 목록보기 항목을 저장할 배열을 선언했습니다.

모든 목록보기 항목에 대한 구성 버튼이 있습니다. 당신이 그들을 클릭하면 새로운 활동이 시작되고 나는이 활동에서리스트 뷰 항목에 접근해야한다. (실제로 앞서 언급 한 배열의 요소이다.)

필자는이를 수행하는 방법을 연구했으며 Parcelalbe 클래스와 관련하여 필자의 의도에 따라 Parcel을 첨부 할 수있었습니다. 그 위대한, 그러나 소포 그냥 단순한 복사본을 것, 그리고 나는 원래 배열 요소 (그래서 내가 그들을 변경할 수있는 활동 등).

내 문제를 이해하고 나를 도울 수 있기를 바랍니다. 건배.

+0

데이터가 목록의 활동에만있는 경우 두 번째 활동을 호출하고 결과를 요청할 수 있습니다 ('startActivityForResult' http://developer.android.com/reference/android/app/Activity.html). #startActivityForResult (android.content.Intent, int)), 그 결과를 사용하여 첫 번째 활동의 데이터를 수정하십시오. 데이터가 저장되어 있으면 구성해야하는 데이터에 식별자를 전달하고 업데이트 한 다음 첫 번째 작업으로 돌아 가면 새 정보를 반영하기 위해 정보를 새로 고칩니다. – frozenkoi

+0

도움이되었지만 도움이되지 않았습니다.나는 버튼 클릭에 대한 새로운 활동을 시작하는 위젯을 가지고있다. ( – Bertie92

답변

0

Parcelable은 갈 길이 멀지 만 기본적이고 단일 차원 인 String only Lists/Arrays를 다루지 않는 한 Parcelable은 매우 빠르게 복잡해질 수 있으므로 경로를 따라 가지 않습니다.

이 문제를 해결하는 가장 좋은 방법은 using Fragments입니다. 이 경우 ListFragment과 같이

ListFragment에는 ListView을 표시하는 데 필요한 모든 비트와 조각이 들어 있습니다. 그것은 (또는에 액세스 할 수 있어야 함) 항목을 소유하고 표시하고 제어하는 ​​방법을 알고 있어야합니다. Fragment에 모든 것을 넣는 이점은 좋아하는 Activity 또는 layout.xml에서 쉽게 다시 사용할 수 있으며 모든 코드를 복제하지 않고도 동일한 기능을 다시 사용할 수 있다는 것입니다.

ListFragment이 동적이어야하고 항상 같은 목록을 표시하는 것이 아니라면 newinstance(...) 방법을 통해 매개 변수를 전달할 수 있습니다. 이 메서드는 그 자체로 Fragment을 구성하거나 채우는 데 사용할 Bundle 개체에 원하는 모든 정보와 인수를 래핑합니다. Here's how to go about that.

Fragment을 다시 작성 (화면 회전, 활동 변경, 응용 프로그램 포커스 등)해야 할 경우 중재하지 않아도 동일한 매개 변수를 사용하여 다시 만들 수 있습니다.

Fragments의 개념과 사용법을 배우려고 노력하는 것이 더 좋아 보이지만 장기적으로는 시간을 절약하고 두통을 덜어주고 더 정비 가능하고 매력있는 코드를 작성할 수 있습니다.

+0

안드로이드 가이드에서 알 수 있듯이 이것은 매우 도움이된다. 그러나 기본적으로 설정 버튼으로 새로운 활동을 시작하는 위젯을 가지고있다. 다른 활동을 시작하는 활동이 아닙니다. – Bertie92

관련 문제