검색

2012-03-21 3 views
1

나는 다음과 같은 예제 코드를 사용하여 내 탭을 만들었으며 의견에 많은 사람들이 더 이상 검색 대화 상자에 호출 할 수 있음을 지적하지 않았다 나는 더 이상이 없다 할 수있었습니다 내 당신이 하드웨어 검색 버튼을 클릭하지만 당신은 버튼을 클릭 할 때 더 이상 아무것도 팝업하지 않는 프로그램을 강제로 닫습니다.검색

누구든지 문제를 해결할 방법을 알고 계십니까?

Multiple Android Activities with TabActivity

import java.util.ArrayList; 
import android.app.Activity; 
import android.app.ActivityGroup; 
import android.app.LocalActivityManager; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.view.Window; 

/** 
* The purpose of this Activity is to manage the activities in a tab. 
* Note: Child Activities can handle Key Presses before they are seen here. 
* @author Eric Harlow 
*/ 
public class TabGroupActivity extends ActivityGroup { 
private ArrayList<String> mIdList; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
if (mIdList == null) mIdList = new ArrayList<String>(); 
} 

/** 
* This is called when a child activity of this one calls its finish method. 
* This implementation calls {@link LocalActivityManager#destroyActivity} on the child   activity 
* and starts the previous activity. 
* If the last child activity just called finish(),this activity (the parent), 
* calls finish to finish the entire group. 
*/ 
@Override 
public void finishFromChild(Activity child) { 
LocalActivityManager manager = getLocalActivityManager(); 
int index = mIdList.size()-1; 

if (index < 1) { 
finish(); 
return; 
} 

manager.destroyActivity(mIdList.get(index), true); 
mIdList.remove(index); 
index--; 
String lastId = mIdList.get(index); 
Intent lastIntent = manager.getActivity(lastId).getIntent(); 
Window newWindow = manager.startActivity(lastId, lastIntent); 
setContentView(newWindow.getDecorView()); 
} 

/** 
* Starts an Activity as a child Activity to this. 
* @param Id Unique identifier of the activity to be started. 
* @param intent The Intent describing the activity to be started. 
* @throws android.content.ActivityNotFoundException. 
*/ 
public void startChildActivity(String Id, Intent intent) { 
Window window = getLocalActivityManager().startActivity(Id,intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); 
if (window != null) { 
mIdList.add(Id); 
setContentView(window.getDecorView()); 
} 
} 

/** 
* The primary purpose is to prevent systems before  android.os.Build.VERSION_CODES.ECLAIR 
* from calling their default KeyEvent.KEYCODE_BACK during onKeyDown. 
*/ 
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if (keyCode == KeyEvent.KEYCODE_BACK) { 
//preventing default implementation previous to android.os.Build.VERSION_CODES.ECLAIR 
return true; 
} 
return super.onKeyDown(keyCode, event); 
} 

/** 
* Overrides the default implementation for KeyEvent.KEYCODE_BACK 
* so that all systems call onBackPressed(). 
*/ 
@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
if (keyCode == KeyEvent.KEYCODE_BACK) { 
onBackPressed(); 
return true; 
} 
return super.onKeyUp(keyCode, event); 
} 

/** 
* If a Child Activity handles KeyEvent.KEYCODE_BACK. 
* Simply override and add this method. 
*/ 
@Override 
public void onBackPressed() { 
int length = mIdList.size(); 
if (length > 1) { 
Activity current = getLocalActivityManager().getActivity(mIdList.get(length-1)); 
current.finish(); 
} 
} 
} 

@Override 
public void onBackPressed() { 
TabGroupActivity parentActivity = (TabGroupActivity)getParent(); 
parentActivity.onBackPressed(); 
} 

다음 절 내가이 ActivityGroup을 사용하는 방법에 대해 설명합니다. 내가 한 첫 번째 작업은이 ActivityGroup을 서브 클래 싱하는 것과 같습니다.
import android.content.Intent; 
import android.os.Bundle; 

public class TabGroup1Activity extends TabGroupActivity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
startChildActivity("OptionsActivity", new Intent(this,OptionsActivity.class)); 
} 
} 

는이 같은 내 TabActivity에이 TabGroup1Activity을 추가했습니다.

TabHost tabHost = getTabHost(); 

tabHost.addTab(tabHost.newTabSpec("tab1") 
.setIndicator("MESSAGES") 
.setContent(new Intent(this, TabGroup1Activity.class))); 

그러면 ActivityGroup에서 시작하려는 모든 활동을 이와 비슷한 방식으로 수행 할 수 있습니다.

Intent frequentMessages = new Intent(getParent(), FrequentMessageActivity.class); 
TabGroupActivity parentActivity = (TabGroupActivity)getParent(); 
parentActivity.startChildActivity("FrequentMessageActivity", frequentMessages); 

Android Manifest에서 내 모든 활동을 검색 할 수 있으며 검색 구현에 대한 자습서를 따랐습니다.

Creating a Search Interface

것이 아니라 코드에서 뭔가 검색 기능을 끊었다으로 검색이 작동 된 TabActivity하려면 코드를 수정하기 전에.

+0

누구를 적용하지 않은 해결책인가? – DeucePie

답변

1

나는 해독 작업을하고 해결책을 발견하지만 난을 가진 사람이 더 문제에 게시 된 튜토리얼 예에 주어진 예에 따라이를 구현에 도움이 될 방법을 알고 있다고 기대했다. 여기

내가 찾았지만 도움을 줄 수 Nested TabHosts