2015-02-05 15 views
6

Ứng dụng Android của tôi có thiết lập lưu lượng đăng ký với Hoạt động và tôi tải các bước dưới dạng phân đoạn vào bố cục hoạt động.Cách tải lại các mảnh vỡ vào hậu trường sau khi thay đổi hướng

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" 
    tools:context="com.example.android.ui.RegisterActivity"> 

    <LinearLayout 
     android:id="@+id/register_container" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"></LinearLayout> 

</RelativeLayout> 

Bây giờ mỗi lớp đoạn thực hiện một giao diện công cộng thực hiện trong RegisterActivity vì vậy mà tôi biết để tải các đoạn bước tiếp theo và tôi thêm các đoạn mới cho backstack

mFragmentTransaction.addToBackStack(mStepOne.TAG); 

bây giờ nó tất cả hoạt động tốt tất cả các cách thông qua 4 bước và tôi có thể điều hướng trở lại thông qua các bước trong khi giữ lại dữ liệu đầu vào trong mỗi đoạn IF nó vẫn trong cùng một hướng (portait)

NHƯNG một lần tôi chang e hướng, các chế độ xem phân đoạn biến mất

nếu tôi lên đến bước 3, tôi vẫn có thể nhấn nút quay lại và nó sẽ quay lại hiển thị cho tôi đoạn có nghĩa là ở đó bằng cách xem người nghe thay đổi hậu trường

mFragmentManager.addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() { 
     @Override 
     public void onBackStackChanged() { 
      if(mFragmentManager.getBackStackEntryCount() > 0) { 
       Log.d("BACK STACK", "TAG (name): " + mFragmentManager.getBackStackEntryAt((mFragmentManager.getBackStackEntryCount() - 1)).getName()); 
      } 
     } 
    }); 

Số lượng và thẻ của các đoạn được giữ lại nhưng không được xem. RegisterActivity onCreateView tải các đoạn cụm từ vào khung nhìn và đó là những gì còn lại trong view khi điều hướng qua các bước.

mFragmentManager = getSupportFragmentManager(); 
mFragmentTransaction = mFragmentManager.beginTransaction(); 
mTerms = new RegisterFragmentTerms(); 
mFragmentTransaction.add(R.id.register_container, mTerms); 
mFragmentTransaction.commit(); 

Dường như với tôi lượt xem được tải vào RegisterActivity trên đầu trang của nhau và được xóa khi thay đổi hướng. Có thể giải quyết những gì tôi đang cố gắng làm không? hoặc tôi đã thực hiện sai? Đó là ứng dụng Android đầu tiên của tôi :)

Cheers

Trả lời

6

Nó có vẻ là do Hoạt động vui chơi giải trí. Bạn đã bao giờ thêm android:configChanges="orientation|keyboardHidden|screenSize" vào số AndroidManifest.xml vào Hoạt động của mình chưa? , nếu bạn thêm cờ đó vào hoạt động của mình, nó sẽ không bị hủy khi thay đổi định hướng và ngăn xếp phân đoạn sẽ không biến mất.

+0

Nó đơn giản là dễ dàng lol, cổ vũ bạn đời, Đó là những gì bạn nhận được khi học cái gì đó mới :) – CaptRisky

+0

** Đối với những người khác, đây không phải là giải pháp an toàn. ** hoạt động của bạn. Ví dụ: khi các ứng dụng đói tài nguyên khác đang được sử dụng trong khi ứng dụng của bạn bị thu nhỏ. –

+0

@ G.Steigert, nếu nó chỉ cho sự thay đổi định hướng, nó có thể an toàn, trong khi như để khôi phục lại trạng thái sau khi hoạt động vui chơi giải trí hoặc quá trình khởi động lại, đó chắc chắn là một chủ đề khác. – jobcrazy

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