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