簡體   English   中英

使用導航抽屜更改片段(?)布局或活動

[英]change fragment(?) layout or activity using a navigation drawer

我正在嘗試使用新的導航抽屜 我按照指南進行了操作,並設法使用章節名稱標題更改所選項目等等。 現在我被卡住了,因為我不知道如何歸檔我接下來要做的事情。

當我在抽屜里點擊一個項目- ,例如-I希望它把我帶到一個屏幕,我有我的具體畫面的特定布局創建的所有東西。 它是像TextViews和圖像一樣的靜態東西,所以我不需要對它們做任何事情。

我應該為抽屜的ListView上的每個項目創建activity和布局,並且(不知道如何)在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,谷歌的例子讓我更加困惑。 我敢肯定,有一些關於片段的偷偷摸摸的東西,我可能已經閱讀了10k次,但我的大腦拒絕同化。 據我所知,在谷歌的例子中,當你單擊抽屜中的一個項目時,它會創建一個新的片段並使這個片段替換除了MainActivity的xml布局中抽屜的ListView之外的唯一內容,這是一個FrameLayout ,占據屏幕的所有空間。 然后所有片段都會顯示一個行星ImageView因此代碼會根據項目點擊的ListView數組位置對片段進行更改。

Oke,這里有許多初學者問題,還有一個非常新的和尚未定義的問題。

首先,你只需要做一個新的活動;

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

從任何Activity(或片段,有點改為'this'='this.getActivity()')

無論您是使用活動還是片段,您都必須創建一個類和一個所屬的xml視圖。 你可以建立一些通用的東西,但大多數時候你不想這樣做。

關於如果你應該啟動一個新的活動,或者在點擊抽屜后切換片段的問題,我會說這仍然很難說。

一般來說,開始一個新的活動是最容易和最“應該”的。 因為活動應該等於可見的屏幕,可能有多個部分(可能是片段)。

然而,在實踐中,您會看到越來越多的Google應用程序(Google音樂,Play商店,新版Gmail ......)似乎放棄了這個想法並使用1個僅會不斷切換片段的活動。

從技術上講,這種將Activity放在應用程序中的角色,這會帶來額外的困難。 然而,在視覺上,過渡更平滑,因為,例如,動作欄保持不變,就像谷歌更喜歡它的“錨”。

然而,似乎他們正在他們的教程中切換片段而不是啟動活動,所以也許你應該嘗試這種方式並處於“新的做事方式”的最前沿:)

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

真的很困惑,我很確定Android工程師在這里錯過了什么!

例如,在iOS上,您可以在Windows上輕松擁有多個“UIViewController”,並為您的所有應用程序提供相同的菜單(或UITabViewController)。 這是一個正常的行為,沒有關於stackoverflow ^^的231個問題

但是在Android上,我看到沒有人有一個干凈的解決方案來使用NavDrawer或Tab with Activies ;-(

我將選擇單個活動和幾個片段方法,讓我們看看!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM