2
맞춤 구현 탭 호스트를 사용합니다. 시작 활동이 android 에뮬레이터에서 작동하지 않았습니다.
public class TabsActivityGroup extends ActivityGroup {
//
//...
//
private void startGroupActivity(String activityID, Intent activityIntent) {
final LocalActivityManager localActivityManager = getLocalActivityManager();
Window window = localActivityManager.startActivity(activityID, activityIntent);
// after call destroy activity window equals null on android 1.6 (emulator). Why?
// on android 2.2 window not equal null
if (window != null) {
View view = window.getDecorView();
tabsContentFrameLayout.addView(view, new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
}
}
//
//...
//
}
그러나 호출 후
활동 파괴 : 다음과 같이 새로운 활동을 만들어 활동을 시작하는 전화를하기 위해 노력하고있어getLocalActivityManager().destroyActivity(className, true);
을하지만,이 코드에서 윈도우와 동일한 널 (null)을 얻을 :
Window window = localActivityManager.startActivity(activityID, activityIntent);
펌웨어 2.1 (Hero) 및 2.2 (Desire)가있는 기기에서 작동하지만 Android 플랫폼이 작동하지 않는 에뮬레이터에서 작동합니다 (
이제 윈도우가 null 인 이유를 이해하기 위해 소스 코드 안드로이드 플랫폼 2.2를 연구 중입니다.
나는 어떤 도움도 기뻐할 것입니다.
임시 해결책 :
public static boolean isEmulator(Context context) {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
final String deviceId = telephonyManager.getDeviceId();
if (deviceId == null) return true;
if (CommonHelper.isNotNull(deviceId) && deviceId.equals(NULL_IMEI)) {return true;} else { return false;}
}
if (!isEmulator(this)) {
getLocalActivityManager().destroyActivity(className, true);
}
작업 시작 권리 예외가 나타나지 않는 경우 –
URL : http://developer.android.com/reference/android/app를 참조하십시오. /LocalActivityManager.html#startActivity (java.lang.String,%20android.content.Intent) –