2013-08-29 44 views
9

cấu trúc ứng dụng của tôi trông giống như:Xác định đoạn backstack trạng thái trống rỗng trong android

SplashActivity -> MainActivity -> (switching between many fragments) 

Những gì tôi mong đợi: kết thúc ứng dụng từ hoạt động chính khi mảnh trở lại ngăn xếp đếm là zero. Đây là cố gắng của tôi:

Trong SplashAcitivty

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (getIntent().getBooleanExtra("exit", false)) { 
     finish(); 
    } 
    } 

Trong MainActivity:

@Override 
public void onBackPressed() { 
    // I need to implement this method 
    if(backstackCount() == 0){ 
    Intent intent = new Intent(this, SplashActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    intent.putExtra(SplashActivity.EXIT_KEY, true); 
    startActivity(intent); 
    }else{ 
    super.onBackPressed(); 
    } 
} 

Vì vậy, xin vui lòng cho tôi biết làm thế nào tôi có thể xác định lại stack khi nó 's có sản phẩm nào? Bởi vì tôi sử dụng thư viện SlideMenu, tất cả các đoạn của tôi chuyển đổi nhiều lần và chúng được thêm vào ngăn xếp sau khi chuyển đổi. Có dạng như sau:

getSupportFragmentManager() 
    .beginTransaction() 
    .replace(R.id.content_frame, fragment) 
    .addToBackStack(null) 
    .commit(); 
+6

bạn có thể sử dụng 'getBackStackEntryCount' – dreamcoder

+0

@dreamcoder Cảm ơn, nó hoạt động. Tôi không tin rằng tôi không biết điều này. Bạn có thể vui lòng trả lời câu hỏi của tôi sau đó tôi có thể chấp nhận nó? – R4j

Trả lời

24

Đây là mã của tôi. Nó hoạt động tốt cho tôi:

@Override 
public void onBackPressed() { 

    int backStackEntryCount = getSupportFragmentManager().getBackStackEntryCount(); 
    if (backStackEntryCount == 0) { 
     goBack(); // write your code to switch between fragments. 
    } else { 
     super.onBackPressed(); 
    } 
} 
+1

Bỏ lỡ một'y 'táo bạo ở cuối đó. –