9

新しいNavigation Drawerを使用しようとしています。私はガイドラインに従い、セクション名のタイトルが選択された項目で変更されるなどの操作を行うことができました。次にやりたいことをアーカイブする方法がわからないので、今は行き詰まっています。

ドロワー内のアイテムをクリックすると、たとえばhome、特定の画面の特定のレイアウトで作成したすべてのものがある画面に移動したいと思います。や画像などはすべて静的なものなTextViewsので、何もする必要はありません。

activity引き出しのすべてのアイテムの と レイアウトを作成し、ListView(まだ方法がわからない) でアクティビティを開始する必要がありonItemSelected()ますか? ListViewまたは、アイテムをクリックして次のように言うたびに、その場でフラグメントを作成するようなことはできますか

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

編集

onItemClick()テストとして、クリックされた配列位置を渡すメソッドを入れました。テストとして、私は次のように使用しました:

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

それは機能しますが、連絡先のレイアウトがDrawerLayout. switchオンポジションを使用してsetContentView()レイアウトを変更してネストする代わりに、私の目標を達成するためのよりエレガントな方法はありDrawerLayoutますか? (それが可能かどうかさえわかりません-同じIDがあるため、おそらく不可能です)

コメントの返信に十分なスペースがないため、@Stefanがこれを編集しました

Stefan に感謝します。Google の例は、私をさらに混乱させるものです。おそらく10,000回読んだフラグメントには、ほんの少しの卑劣なことがあると確信していますが、私の脳は同化を拒否しています. 私が理解している限り、Google の例では、ドロワー内のアイテムをクリックすると、新しいフラグメントが作成され、このフラグメントがxml レイアウトのListViewドロワー以外にある唯一のものを置き換えます。画面のスペース。次に、すべてのフラグメントは惑星を表示するだけなので、コードはフラグメントに、項目クリックの配列位置に基づいてその画像を変更するように指示します。MainActivityFrameLayoutImageViewListView

4

2 に答える 2

5

わかりました、ここでの多くのスターターの質問は、かなり新しく、まだ定義されていないものと組み合わされています.

まず、次のようにして新しいアクティビティを開始します。

this.startActivity(new Intent(this, ActivityClassName.class)); 

任意のアクティビティ (またはフラグメント、'this' = 'this.getActivity()' に少し変更) から

アクティビティとフラグメントのどちらを使用する場合でも、常にクラスと所属する xml ビューを作成する必要があります。一般的なものを構築することはできますが、ほとんどの場合、これを行いたくありません。

新しいアクティビティを開始する必要があるのか​​ 、ドロワーをクリックした後にフラグメントを切り替える必要があるのか​​ という質問については、まだ言いにくいと思います。

一般に、新しいアクティビティを開始するのが最も簡単で、最も「あるべき」方法です。アクティビティは、複数のパーツ (フラグメントである可能性があります) を含む可視画面に等しい必要があるためです。

しかし実際には、このアイデアを放棄し、常にフラグメントを切り替えるだけの 1 つのアクティビティを使用しているように見える Google アプリ (Google ミュージック、Play ストア、新しい Gmail など) がますます増えています。

技術的には、この種のアクティビティはアプリケーション ロールに配置されるため、さらに困難が生じる可能性があります。ただし、視覚的には、移行ははるかにスムーズです。たとえば、アクションバーは同じままで、Google が好む「アンカー」に近いものです。

ただし、アクティビティを開始する代わりに、チュートリアルでフラグメントを切り替えているようです。そのため、おそらくそのように試して、「新しいやり方」の最先端にいる必要があります:)

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

于 2013-06-06T11:29:45.683 に答える