tabHost를 사용하여 내 응용 프로그램에서 4 개의 탭을 만들었으므로 제대로 작동합니다. 첫 번째 탭을 클릭하면 해당 XML 페이지가로드되고 세부 정보가 표시됩니다. 그 페이지에서 하나의 버튼이 있습니다. 버튼을 클릭하면 인 텐트를 사용하는 다른 활동이로드됩니다. 내 문제는 같은 탭에 해당 활동을 표시하는 방법입니까?탭 활동에서 하위 활동을 만드는 방법
2
A
답변
4
당신은 InterMediateActivity
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
public class InterMediateActivity extends TabActivityGroup{
String TabID;
String TabName;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
TabID=getIntent().getStringExtra("TabID");
TabName=getIntent().getStringExtra("TabName");
Log.i("Tab from intermediate",""+TabID+" "+TabName);
filterTabs(TabID);
}
private void filterTabs(String TabID)
{
startChildActivity("Options", new Intent(this,HomePage.class));
}
}
다음과 같이 다른 활동에이 클래스를 확장하는 대신 직접 탭에서 내부 활동을 호출하는이 클래스
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;
public class TabActivityGroup 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();
}
}
}
를 사용해야합니다
다음과 같이
Intent intent = new Intent(this, InterMediateActivity.class);
intent.putExtra("TabID", item.elementAt(0));
intent.putExtra("TabName", item.elementAt(1));
specTab.setContent(intent);
mTabHost.addTab(specTab);
관련 문제
- 1. android의 탭 활동에서 활동을 다시로드하는 방법은 무엇입니까?
- 2. 다른 활동에서 활동을 완료하는 방법
- 3. 하위 탭 활동에서 상위 탭으로 문자열 전달
- 4. 기본 활동에서 현재 활동을 새로 고치는 방법
- 5. 이전 활동에서 현재 활동을 알리는 방법
- 6. Android : 활성 활동에서 전경 활동을 닫는 방법?
- 7. 내 활동에서 캘린더 활동을 시작하는 방법
- 8. 다른 활동에서 활동을 닫는 방법 Android
- 9. 조각 탭 활동을 표시하는 방법?
- 10. 하위 활동에서 결과를 얻는 방법
- 11. 하나의 활동에서 일련의 열린 하위 활동을 마치려면 어떻게해야합니까?
- 12. 다른 활동에서 패키지 하위 폴더의 활동을 여는 방법은 무엇입니까?
- 13. 스레드가있는 활동에서 다른 활동을 시작하십시오.
- 14. TabActivity가 아닌 활동에서 tabHost를 만드는 방법
- 15. 다른 활동에서 특정 탭 활동 호출 방법
- 16. 하위 탭 콘텐츠 활동에서 상위 활동으로 '이벤트'전달 TabActivity
- 17. 재사용 가능한 활동을 만드는 방법!
- 18. 내 활동을 투명하게 만드는 방법?
- 19. 현재 활동에서 다음 활동을 설정하는 방법은 무엇입니까?
- 20. tabview 내 목록 활동에서 새 활동을 시작하는 방법
- 21. 하나의 활동에서 다른 활동을 여는 방법 (활동 및 중간보기 탭 레이아웃)
- 22. RecognizerIntent.ACTION_RECOGNIZE_SPEECH는 탭 내 주요 활동에서
- 23. 활동에서 모든 하위 컨트롤을 찾는 방법 (Android)
- 24. 탭 호스트에서 탭 콘텐츠의 활동을 전환하려면 어떻게해야합니까?
- 25. 주요 활동에서 다양한 활동에서 가치를 얻는 방법.?
- 26. DummyFragment에서 활동을 호출하는 방법?
- 27. 메뉴 항목을 사용하여 동일한 활동에서 활동을 시작하려고합니다.
- 28. 정상 활동에서 조각 활동을 시작하십시오. java.lang.NoClassDefFoundError
- 29. 부모 활동에서 자식 활동을 닫는 중
- 30. 활동을 시작하지 않고 활동에서 구성원 함수 호출
[this] (http://united-coders.com/nico-heid/use-android-activitygroup-within-tabhost-to-show-different-activity/) 자습서와 [this] (http : /gamma-point.com/content/android-how-have-multiple-activities-under-single-tab-tabactivity) –