0

Facebookのようなスタイルのメニューをアプリに実装しました。これにより、基本的にボタンをクリックし、ビューを横にスライドして、トップレベルビューの背後に隠されたメニューにアクセスできます。

現在、一般的なAndroidアプリと同様に、すべてのビュー(このアプリには多くの画面があります)が個別のXMLファイルに含まれています。フラグメントを多用していることに注意してください。

目標は、アクティビティとフラグメントをトップレベルのビューに膨らませる代わりに、コードを抽象化して、すべての一部となるこのトップレベルの親のこの子に膨らませることです。私たちの活動(私たちのすべての活動はカスタム活動からサブクラス化されています)。

menu.xmlが機能する方法は、空のネストされた子FrameLayoutをホストする外部FrameLayoutを使用することです。

私たちが避けようとしているのは、この外部メニューコードをビューXMLのすべてにラップすることですが、これは確かに機能します。

空のネストされたFrameLayoutを1つのファイルに含むメニューコードをプログラムで作成する方法を見つけようとしています。次に、フラグメントまたはアクティビティのXMLを次のように膨らませます。

listView = (PullToRefreshListView) inflater.inflate(R.layout.pull_to_refresh_list_view, container, false);

そうする代わりに、ネストされた子FrameLayoutにそれを膨らませます。このようなものが私が試みているものです:

listView = (PullToRefreshListView) inflater.inflate(R.layout.pull_to_refresh_list_view, container, false);
    ((FrameLayout) getActivity().findViewById(R.id.child)).addView(listView);

現在、これにより、「アクティビティを再開できません。フラグメントMyFragment [id=0x7f090019]のID0x7f090019のビューが見つかりません」という結果になります。

どんな入力でも大歓迎です。ありがとうございました!

4

1 に答える 1

0

同様のスタイルのメニューで私がしたことは、フレームレイアウトを追加し、それにフラグメントを膨らませることでした。次に、translateAnimationとlayoutAppを使用して、画面を適切な場所に変換しました。このすべてのコードをslidingDrawerActivityに保存しました。これにより、コードが適切にセグメント化され、SlideOutMenuを呼び出して使用できるようになりました。

これがお役に立てば幸いです-もっとディートが必要な場合は私に知らせてください

編集:

サポートライブラリを使用してフレームレイアウトをフラグメントに置き換えるためのコード

FragmentTransaction FT=getFragmentManager().beginTransaction();
FT.replace(R.id.yourFrameLayout, new YourFragment(), yourFragmentTag);
FT.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
FT.commit();
于 2012-09-25T22:21:34.553 に答える