2011-09-05 6 views
4

제안 된 입력에 대해 애플리케이션 기능을 제공하기 위해 현재 SearchView 객체를 사용하고 있습니다.SearchView에서 프래그먼트를 변경하면 별개로 캐스케이드가 적용됩니다.

그러나이 위젯은 제출 될 때 intent-filter을 사용하여 검색을 시작합니다. 응답을 표시하기 위해 검색 결과 Activity을 실행하면 응용 프로그램을 전화로 실행할 때 유용합니다. 그러나 타블렛에서 검색 결과를 현재 Activity에있는 조각에로드하고 싶습니다!

제안 사항대로 제출 동작을 덮어 쓰는 대신 내 앱을 가능한 한 통일적으로 (전화/탭 간의 크로스 오버 측면에서)하기를 원합니다. in this answer 새로운 활동을 시작하여 검색 용어를 라우팅하는 곳을 원합니다 갈 필요가있다. 결과 활동에 대한 전화에서, 탭에서 이전 활동으로 searchTerm을 전달하고 싶습니다.

그래서 저는 묻습니다. - 이전 활동에 정보를 전달할 수 있습니까?

답변

4

난 당신이 활동을 라우팅 역할을하여 SearchCatchingActivity을 가진 건의 할 것입니다. 쿼리를 포착하여 필요한 작업에 전달할 수 있습니다 (결과 조각이있는 이중 창 또는 단일 결과 조각이있는 단일 창). 다음 액티비티로 라우팅 할 때 FLAG_ACTIVITY_CLEAR_TOP 인 텐트 플래그를 사용하여 다음 액티비티가 해당 인스턴스의 기본 액티비티가되도록합니다. 라우팅 활동에 finish()으로 전화하여 백 스택에서도이를 제거해야합니다.

+0

FLAG_ACTIVITY_CLEAR_TOP을 사용하면 백 스택에서 더 낮은 Activity 인스턴스를 효과적으로 제거하고 ontop을 다시 인스턴스화합니다. 직전의 활동에 사용하면 효과적으로 뒷자리에서 "뒤로"라고 부릅니다. – Graeme

0

내 현재 솔루션 (더티)은 동일한 활동에 Activity이 다시 시작될 때 확인 된 공개 정적 문자열을 갖는 것입니다. 해당 용어를 사용하여 검색이 시작되고 정적 변수가 지워진 경우 .

public class SearchCatchingActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState); 

    // Ensure this activity isn't in the backstack, notify the previous activity in the backstack that it should handle the search onResume() 
    DualPaneActivity.searchTerm = getIntent().getStringExtra(SearchManager.QUERY); 
    finish(); 

} 

DualPaneActivity :

if (!searchTerm.equalsIgnoreCase("")) { 
    startSearchThread(searchTerm) 
    searchTerm = ""; 
} 
1

내 활동의 시작 모드를 singleTop으로 설정하고 이에 대한 onNewIntent 메소드를 처리합니다.

의 AndroidManifest.xml

<activity android:name=".MyActivity" android:launchMode="singleTop" android:theme="@style/Theme.MyTheme" > 
    <intent-filter > 
     <action android:name="android.intent.action.SEARCH" /> 
    </intent-filter> 

    <meta-data 
     android:name="android.app.searchable" 
     android:resource="@xml/searchable" /> 
</activity> 

MyActivity.java (이 단순화를 통해-분명히 - 당신은 단지 그것을 검색 쿼리를 전달하는 기존의 단편에 공개 방법을 가질 수의 예에서 I 교체 아래. 새로운 단편을 가지고 있습니다.)

관련 문제