2009-12-16 4 views
1

화면에 검색 결과를 표시하고 싶습니다. 그런 식으로 구현했습니다.Android 디스플레이 검색 결과 접근

검색 양식 사용자가 '검색 필드'및 '검색 위치'를 채우면 bean에 값을 설정하고 해당 bean은 정적이므로 모든 위치에서 액세스 할 수 있습니다.

그럼 난 검색 폼에서 작성하고 데이터를 표시 값들 정적 빈의 대신에 데이터를로드 '의 SearchResult'활성 '에서 OnCreate'방법에

Intent mainIntent = new Intent(SearchVenueResults.this, SearchResults.class); 
startActivity(mainIntent); 

를 사용하여 결과 화면의 검색 의도를 시작한다.

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     loadDataAndSetupUI(); 
     super.onCreate(savedInstanceState); 
    } 

제 질문은 올바른 사용법인가요 아니면 Android에서 또 다른 좋은 접근 방법입니까?

빠른 아이디어 나 빠른 코드를 보내 주시면 감사하겠습니다.

답변

2

일반적으로 결과 화면 활동의 처리기는 일반적으로이 작업을 수행하기에 좋은 장소입니다. 그러나 문제의 라인 사이에 읽는 것은 문제를 일으킬 수있는 적어도 두 가지가 있습니다.

정적 개체를 사용하여 하나의 활동에서 다른 활동으로 값을 전송하는 것은 확실히 잘못된 접근입니다. 그 이유는 컨텍스트간에 데이터를 교환하기 위해 Android에 이미 잘 정의 된 메커니즘이 있기 때문입니다. 이는 BundlesIntents입니다. 그래서,이 같은 것을 할, 사용자가 검색 것들에 대한 결과 활동을 알려 : 당신의 SearchResult 활동에

Intent mainIntent = new Intent(SearchVenueResults.this, SearchResults.class); 
mainIntent.putExtra("search_query", getValueFromSearchBox()); 
startActivity(mainIntent); 

을에서 onCreate에서이 작업을 수행 :

public void onCreate(Bundle savedInstanceState) { 
    String searchQuery = getIntent().getExtras().getStringExtra("search_query"); 
    loadDataAndSetupUI(searchQuery); 
    super.onCreate(savedInstanceState); 
} 

또한, 안드로이드는 꽤 동작 정적 변수의 수명과 관련하여 예측할 수없는 것이 많다. 나는 액티비티 클래스에서 정적 변수를 유지하는 것이 이 아니고이 새로운 액티비티를 시작할 때이 변수가 여전히 유효하다는 것을 몇 번이나 알았 기 때문에 클래스간에 데이터를 교환하는 방법으로 정적에 의존해서는 안됩니다.

둘째로, 동 기적으로 실행하려면 loadDataAndSetupUI을 구현하는 것이 가장 바람직합니다. 그렇게하면 검색이 끝날 때까지 UI가 잠기고 Android는 앱을 죽이기까지합니다. 대신 백그라운드 작업에 AsyncTask을 사용하십시오.

+0

감사합니다. 아주 좋은 해결책입니다. –