我使用自定义实现tabhost。按如下方式创建新活动:
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平台无法运行的模拟器上;(
现在我正在研究源代码android平台2.2,以了解为什么窗口等于null。
我会很高兴得到任何帮助。
临时解决方案:
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);
}
答案 0 :(得分:1)