启动活动对Android模拟器不起作用

时间:2011-01-10 04:25:26

标签: java android android-activity activitygroup

我使用自定义实现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);

}

1 个答案:

答案 0 :(得分:1)

通话是否适合开始活动?

我看到startActivity只接受一个I​​ntent参数..

请检查。另外,嵌入在try / catch中以获取异常(如果有的话)..