2

我使用我的自定义实现 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的源代码,以了解为什么window等于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);

}
4

1 回答 1

1

呼叫是否适合开始活动?

我看到startActivity只需要一个 Intent 参数..

好心检查。此外,嵌入 try/catch 以获取异常(如果有)。

于 2011-01-10T06:06:46.900 回答