2
私のカスタム実装のタブホストを使用しています。次のように新しいアクティビティを作成します。アンドロイドエミュレータの開始アクティビティが機能しませんでした
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);
私が活動を開始しますが、このコードからウィンドウ等しいヌルを取得するために電話をかけるためにしようとしている:
ファームウェア2.1(ヒーロー)と2.2(欲望)を有する装置でWindow window = localActivityManager.startActivity(activityID, activityIntent);
全て良好に動作するが、Androidプラットフォームとのエミュレータでは動作しない。(
今、私はなぜウィンドウがヌルかを理解するために、ソースコードのアンドロイドプラットフォーム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) –