2011-01-10 2 views
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); 

} 

답변

1

는 시작 활동에 대한 호출의 권리인가?

I가 startActivity이 텐트의 한 파라미터를 취하는 것을 알 ..

친절 확인. 또한 예외가 발생하면 try/catch에 포함 시키십시오 ..

+0

작업 시작 권리 예외가 나타나지 않는 경우 –

+0

URL : http://developer.android.com/reference/android/app를 참조하십시오. /LocalActivityManager.html#startActivity (java.lang.String,%20android.content.Intent) –