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

} 

答えて

1

は開始アクティビティのコール右か?

私は

親切に確認してください。.. startActivityはテントのパラメータを1つだけ取ることがわかります。また、例外が発生した場合はtry/catch内に埋め込みます..

+0

開始アクティビティ右 例外は表示されません –

+0

URL:http://developer.android.com/reference/android/appを参照してください/LocalActivityManager.html#startActivity(java.lang.String,%20android.content.Intent) –

関連する問題