2013-06-06 34 views
9

Tôi đang cố sử dụng Ngăn Điều hướng mới. Tôi làm theo các hướng dẫn và tôi quản lý để có nó làm việc với phần tên tiêu đề thay đổi trên mục được lựa chọn và như vậy. Bây giờ tôi bị mắc kẹt bởi vì tôi không có ý tưởng làm thế nào để lưu trữ những gì tôi muốn làm gì tiếp theo.bố cục hoặc hoạt động của phân đoạn thay đổi (?) Bằng ngăn điều hướng

Khi tôi bấm vào một mục trong ngăn - home, ví dụ-Tôi muốn nó đưa tôi đến màn hình có tất cả nội dung tôi đã tạo trong bố cục cụ thể cho màn hình cụ thể. Đó là tất cả các công cụ tĩnh như TextViews và hình ảnh, vì vậy tôi không phải làm bất cứ điều gì với chúng.

Tôi có nên tạo activity và bố cục cho mọi mục trên ListView của ngăn kéo và (chưa biết cách thực hiện) bắt đầu hoạt động trong onItemSelected()? Hoặc tôi có thể làm một cái gì đó giống như tạo ra một mảnh một cách nhanh chóng mỗi khi tôi nhấp một mục trong ListView và nói điều gì đó như

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

EDIT

Là một thử nghiệm tôi đưa vào onItemClick() một phương pháp mà thông qua ở vị trí mảng được nhấp. Là một thử nghiệm tôi chỉ sử dụng như:

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

Nó không làm việc, nhưng rõ ràng là tôi đã làm mất các ngăn kéo như những thứ liên lạc bố trí không được lồng trong DrawerLayout. Có cách nào thanh lịch hơn để đạt được mục tiêu của tôi thay vì sử dụng một số switch trên vị trí và sử dụng setContentView(), sửa đổi bất kỳ bố cục nào được lồng trong một DrawerLayout không? (Tôi thậm chí không biết nếu nó có thể - có lẽ không, vì có ID tương đương)

@Stefan sửa này như không có đủ không gian trong bài trả lời bình luận

Cảm ơn Stefan, ví dụ Google điều khiến tôi bối rối hơn. Tôi chắc rằng có một điều rất lén lút về những mảnh vỡ mà tôi có thể đã đọc 10k lần nhưng bộ não của tôi từ chối đồng hóa. Theo tôi đã hiểu, trong ví dụ của Google khi bạn bấm vào một mục trong ngăn kéo, nó tạo ra một đoạn mới và làm cho đoạn này thay thế thứ duy nhất bên cạnh ngăn kéo ListView của bố cục trong bố cục xml MainActivity, là FrameLayout chiếm tất cả không gian của màn hình. Sau đó, tất cả các mảnh làm là hiển thị một hành tinh ImageView để mã nói với đoạn để thay đổi hình ảnh đó dựa trên vị trí mảng ListView của mục nhấp.

Trả lời

5

Oke, rất nhiều câu hỏi bắt đầu ở đây được kết hợp với một câu hỏi khá mới và chưa được xác định.

Trước hết, bạn bắt đầu Hoạt động mới bằng cách thực hiện;

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

Từ bất kỳ hoạt động (hoặc Fragment, một chút thay đổi để 'này' = 'this.getActivity()')

Không có vấn đề nếu bạn sử dụng hoạt động hoặc mảnh vỡ, bạn sẽ luôn có để tạo ra một và lớp xml. Bạn có thể xây dựng một cái gì đó chung chung, nhưng hầu hết thời gian bạn không muốn làm điều này.

Về câu hỏi nếu bạn nên bắt đầu một Hoạt động mới hoặc chuyển đổi Phân đoạn sau khi nhấp vào Ngăn kéo, tôi sẽ nói điều đó vẫn khó nói.

Nói chung, cách đơn giản nhất và dễ nhất là bắt đầu một Hoạt động mới. Là một hoạt động nên bằng một màn hình hiển thị với nhiều phần có thể (có thể là Fragments). Tuy nhiên, trong thực tế, bạn thấy ngày càng nhiều ứng dụng của Google (Google Music, Cửa hàng Play, Gmail mới ..) dường như từ bỏ ý tưởng này và sử dụng 1 Hoạt động chỉ liên tục chuyển đổi Phân đoạn.

Về mặt kỹ thuật, loại địa điểm này hoạt động trong vai trò Ứng dụng, điều này có thể mang lại nhiều khó khăn hơn. Tuy nhiên, một cách trực quan, các chuyển đổi mượt mà hơn, ví dụ, thanh tác vụ vẫn giữ nguyên và giống như đó là 'neo' mà Google thích.

Dường tuy nhiên, rằng họ là chuyển đổi Những mảnh vỡ trong hướng dẫn của họ thay vì bắt đầu hoạt động, vì vậy có lẽ bạn nên thử nó như vậy và được trên bờ chảy máu của 'phương pháp mới để làm những việc' :)

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

+0

im mới vào trang web vì vậy tôi không biết nếu chỉnh sửa bình luận không thông báo cho bạn bằng cách nào đó, btw chỉnh sửa bài chính là không gian bình luận là không đủ – kandros

+0

Ví dụ google tái sử dụng cùng một mảnh với một đối số khác để chuyển đổi một imageView, nhưng trong cùng một kiểu, bạn có thể chỉ cần xây dựng trong một câu lệnh switch và thực hiện Fragment thay thế bằng một Fragment hoàn toàn mới có quan điểm và logic riêng của nó. –

0

Nó thực sự bối rối, tôi khá chắc chắn rằng kỹ sư Android đã bỏ lỡ điều gì đó ở đây!

Ví dụ trên iOS, bạn có thể dễ dàng có nhiều "UIViewController" trên các cửa sổ và có cùng menu (hoặc UITabViewController) cho tất cả các ứng dụng của bạn. Thats một hành vi bình thường w/o 231 câu hỏi trên stackoverflow ^^

Nhưng trên Android, tôi thấy không ai có một giải pháp sạch để sử dụng NavDrawer hoặc Tab với Activies ;-(

Tôi sẽ chọn đơn

Các vấn đề liên quan