2013-06-06 7 views
9

新しいナビゲーション・ドロワーを使用しようとしています。私はガイドラインに従いました、そして、私はそれが選択された項目の上で変化するセクション名タイトルと一緒に働くようにしました。今私は、私が次にしたいことをどのようにアーカイブするのか分かりませんので、立ち往生しています。ナビゲーション・ドロワーを使用してフラグメント(?)のレイアウトまたはアクティビティを変更する

ドロワーの項目をクリックすると、家のなどが表示されます。たとえば、特定の画面の特定のレイアウトで作成したすべてのものを画面に表示することができます。それはTextViewsや画像のような静的なものなので、何もする必要はありません。

ドロワーのListViewにあるすべてのアイテムのレイアウトとactivityを作成する必要がありますか(まだ始まっていません)onItemSelected()でアクティビティを開始しますか?それとも、私はその場で毎回の断片を作成するような何かを行うことができ、私はListView内の項目をクリックすると言って、何か私はonItemClick()渡されたメソッドに入れて試験として

if(homeClicked){ //use home.xml as layout } 
if(contactClicked){ //use contact.xml as layout } 

EDIT

のようなクリックされた配列位置にあります。テストとして、私はちょうど同じように使用:

if(position==2) { // this is "contact" in the list layout 
    setContentView(R.layout.contacts); 
} 

それがない作品が、明らかに私はDrawerLayoutにネストされていない連絡先のレイアウトのものとして引き出しを失います。ポジションをswitchに置き換えてsetContentView()を使用し、DrawerLayoutにネストするレイアウトを変更する代わりに、私の目標を達成するよりエレガントな方法がありますか? (それが可能だ場合は私も知っていない - おそらく、同じIDがあるとして)

を@Stefanコメントの返信に十分なスペース

おかげでステファンはありませんとしてこれを編集し、グーグルの例です。私をもっと混乱させるもの。おそらく10k回読んだことのある断片については、ちょっと卑劣なことがあるのですが、私の脳は同化しません。 Googleの例では、引き出し内のアイテムをクリックすると、新しいフラグメントが作成され、FrameLayoutMainActivityのxmlレイアウトの引き出しのListViewのほかに、このフラグメントが置き換えられますそれは画面のすべてのスペースを取る。そして、すべての断片は、惑星ImageViewを表示するので、コードは、項目クリックのListView配列位置に基づいてその画像を変更するために断片に伝えます。

答えて

5

ここでは多くの初心者の質問が、まだ新しく未定義のものと組み合わされています。

まず、あなたは単純に新しいアクティビティを開始します。

任意の活動(またはフラグメント、「この」=「this.getActivity()」に変更されたビット)から
this.startActivity(new Intent(this, ActivityClassName.class)); 

どんなにあなたが活動またはフラグメントを使用している場合、あなたは常に作成する必要がありますクラスと所属XMLビュー。 一般的なものを構築することはできますが、ほとんどの場合、これをしたくない場合があります。質問について

あなたが新しいアクティビティを起動、または引き出しをクリックした後、フラグメントを切り替える必要がある場合は、私が言うのはまだ難しいのthatsを言うと思います。一般的に

「それはすべきであるとしてちょうど新しい活動を開始するには、それが最も簡単です。アクティビティは、おそらく複数のパーツ(フラグメントである可能性があります)と見える画面に等しくなければなりません。実際に

しかし、あなたはこのアイデアを放棄し、唯一絶えずフラグメントをスイッチ1つのアクティビティを使用するように見えるより多くのGoogleアプリ(Googleの音楽、Playストア、新しいGmail ..)を参照してください。技術的には

場所のこの種の余分な困難をもたらすことができ、アプリケーションの役割で活動、

。 しかし、視覚的には、アクションバーが同じままであり、それがGoogleが好きな「アンカー」ほど多いので、遷移はよりスムーズです。

ので、おそらくあなたがそのようにしようとすると、「物事の新しい方法」の最前線にする必要があり、彼らはチュートリアルのフラグメントを切り替える代わりに活動を開始していること、しかしそうです:)

http://developer.android.com/training/implementing-navigation/nav-drawer.html

+0

私は知らないので、コメントを編集しても何とかして、編集したメインの投稿がコメントスペースとして編集されました。 – kandros

+0

Googleの例では同じフラグメントを再利用していますimageViewを切り替える引数は変わりませんが、同じようにswitchステートメントで単純に構築して、フラグメントを独自のビューとロジックを持つ完全に新しいフラグメントに置き換えることができます。 –

0

それは私がAndroidのエンジニアはここで何かを逃したかなり確信している、本当に混乱してます! iOSの例えば

は、あなたが簡単にWindows上で複数の「のUIViewController」を持っており、すべてのアプリケーションの同じメニュー(またはUITabViewController)を持つことができます。ザッツstackoverflowの^^

上でもAndroid上/ O 231個の質問ワット正常な行動、私は誰もActiviesでNavDrawerまたはタブを使用するためにきれいな解決策を持っていない参照;-(

私は単一を選んだつもりですいくつかの断片のアプローチは、見てみましょう!

関連する問題