新しいフラグメントAPIを使用してデュアルペインレイアウトを作成することで、タブレット向けのUIをアプリに追加することにしました。しかし、問題は、私のアプリの画面の多くがアクティビティサブクラスだということです。
- 約50のアクティビティがあります。
- 私は私のアプリは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
私はそれらを直接使用し、Honeycombでのみ有効にします。 – Grishka
これは、フラグメントとして使用されるすべてのパーツに加えて、アクティビティのActivityFragmentsを作成する必要があることを意味します。つまり、apkのサイズも大きくなります。サポートライブラリを使用する利点はありません。 – zapl