0
我決定使用新的片段API創建雙窗格佈局,以便將更多適用於平板電腦的UI添加到我的應用程序中。但問題是我的應用程序中有很多屏幕是活動子類。手動將它們全部轉換爲碎片不是一種選擇,因爲:
- 有近50項活動。
- 我希望我的應用能夠與所有版本的Android兼容1.6開始
- 我希望它儘可能小,因此使用兼容性庫不是一個選項,因爲它太大了
在片段中開始活動
雖然我發現somequestions其答案是說這是不可能的,我已經做得差不多了。這裏是我的自定義片段的代碼:
public static class ActivityFragment extends Fragment{
Intent intent;
View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if(intent==null){
Bundle a=getArguments();
intent=a.getParcelable("intent");
}
LocalActivityManager am=((ActivityGroup)getActivity()).getLocalActivityManager();
Window wnd=am.startActivity("intent"+intent.hashCode(), intent);
if(view==null){
view=wnd.getDecorView();
view.setLayoutParams(new FrameLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT));
}
return view;
}
public void onDestroy(){
super.onDestroy();
if(!((TabletMainActivity)getActivity()).tabs.containsValue(this)){
((ActivityGroup)getActivity()).getLocalActivityManager().destroyActivity("intent"+intent.hashCode(), true);
}
}
}
爲了工作,它只能在ActivityGroup中使用。 唯一的問題是在使用ListView方法的某些活動中,onItemClick()在活動恢復後不會被調用,即,我單擊一個項目,另一個活動在當前之上開始,但當我返回時,項目不再可點擊。
您不能使用沒有兼容性庫的片段,並且只會爲您的apk添加〜110kb。 – zapl 2012-04-28 17:00:03
我直接使用它們並僅在蜂窩上啓用。 – Grishka 2012-04-28 17:13:04
這意味着您必須創建ActivityFragments of Activities以作爲碎片使用的所有部分 - 這同樣會增加您的apk大小,並且我沒有看到使用支持庫的好處。 – zapl 2012-04-28 17:19:58