2014-12-31 16 views
6

Tôi có hoạt động phân mảnh Với ngăn kéo điều hướng contatin.au khi nhấp vào mục ngăn kéo điều hướng, nó mở một đoạn 1, đoạn 2, đoạn 3.và sau đó bấm vào nút sự kiện trong Fragment 1 mở mới Fragment 4.Làm thế nào để xử lý BackPress với Fragment

tôi muốn xử lý lại sự kiện nhấn phím làm thế nào tôi có thể làm điều này trên Fragment 4? sau khi nhấp lại quan trọng trong Fragment 4 tôi muốn quay trở lại Fragment 1.

enter image description here

+0

nếu bạn không làm bất cứ điều này phải xảy ra, mảnh phù thủy mở ra sau backPress? –

+0

http://stackoverflow.com/questions/7992216/android-fragment-handle-back-button-press – duggu

+0

không sau khi backpress nó mở một bố trí nhà của tôi đó là 'Fragment 2' nó được thiết lập như là mảnh chính trong ngăn điều hướng – kosala

Trả lời

19

Thêm Những mảnh vỡ để BackStack. Trước khi cam kết() giao dịch, sử dụng phương pháp addToBackStack() tức

addToBackStack("Some String").commit(); 

và Override phương pháp

@Override 
public void onBackPressed() { 
    if (getSupportFragmentManager().getBackStackEntryCount() > 0) { 
     getSupportFragmentManager().popBackStack(); 
    } else { 
     this.finish(); 
    } 
} 
+0

bạn có ý nghĩa như thế này 'getFragmentManager() \t \t \t .beginTransaction() \t \t \t .replace (R.id.content_frame , \t \t \t \t \t Entry_Account.newInstance(), Entry_Account.TAG) .addToBackStack() \t \t \t .commit(); 'bên trong' Đoạn 1' của tôi nhưng nó nói 'Phương thức addToBackStack (String) trong kiểu FragmentTransaction không được áp dụng cho các đối số()' – kosala

+5

Trong phương thức onBackPressed() khi (fm. getBackStackEntryCount()> 0) {pop the fragment} else {super.onBackPressed();} – sandeepmaaram

+0

ý nghĩa của bạn trong '{pop the fragment}' – kosala

4

onBackPress() onBackPressed() và kiểm tra quản lý fragement của bạn có backStack entry> 0 nếu nó có lớn hơn 0 so với ngăn xếp popback nếu không kết thúc hoạt động của bạn ..

if(getFramentManager().getBackStackEntryCount()>0){ 
     // popback statck. 
} 
else{ 
    // finish your activity. 
} 

đừng quên thêm phân đoạn của bạn vào BackStack để duy trì phân cấp phân đoạn ..

fragTransacion.addToBackStack(TAG); 
+0

làm cách nào tôi có thể thêm phân đoạn vào BackStack để duy trì phân cấp phân đoạn? – kosala

+0

@Sameera kiểm tra answerw đã chỉnh sửa của tôi –

+0

hoạt động của nó.Cảm ơn bạn. – kosala

5

Mã của bạn để thêm đoạn để backstack nên như:

getFragmentManager() .beginTransaction() .replace(R.id.content_frame, Entry_Account.newInstance(), Entry_Account.TAG).addToBackStack("Some string") .commit(); 

Sau đó On phương pháp onBackPressed Hoạt động của, sử dụng đoạn mã này:

@Override 
public void onBackPressed() { 
if(getFramentManager().getBackStackEntryCount()>0){ 
     // popback statck. 
} 
else{ 
    // finish your activity. 
} 
} 
+0

'@Override public void onBackPressed() {if (getSupportFragmentManager(). GetBackStackEntryCount()> 0) {getSupportFragmentManager(). PopBackStack(); } else {this.finish(); }} ' – kosala

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