2016-03-11 52 views
1

我試圖爲每個片段處理onBackPressed不同。爲此,我想使用switch語句來處理當前正在顯示的片段。 在我的主我有。但不知道在switchstatement中使用什麼。使用switch語句來處理片段中的onBackPressed()

public class MyActivity extends Activity 
{ 
    @Override 
    public void onBackPressed(){ 
     super.onBackPressed(); 
switch(........){ 
     case (1): 
     Fragment1.onBackPressed(); 
     case (2): 
     Fragment2.onBackPressed(); 
    } 
} 

在我的片段:

public class Fragment1 extends Fragment 
{ 
    //My created method 
    public static void onBackPressed() 
    { 
     // make it do what you want. 
    } 
} 

所以我的問題,我該如何使用,其中德案件取決於哪些片段在這一刻呈現出switchstament。

回答

0

不要在活動的單onBackpressed使用這些開關,但你可以得到每個片段對象的關鍵事件,並做到這樣,

fragment.getView().setFocusableInTouchMode(true); //Don't miss this line 
fragment.getView().setOnKeyListener(new OnKeyListener() 
{ 
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) 
    { 
     if(keyCode == KeyEvent.KEYCODE_BACK) 
     { 
      //Do what you want 
      return true; 
     } 
     return false; 
    } 
}); 
+0

你好,從我迄今爲止發現/聽到的是,當使用例如編輯文本,這是無效的,至於我有多個。因爲這會引起焦點 –

+0

嘿,我找到了一種方法來完成這項工作,然而,這需要我分別處理每個編輯文本的事件,這似乎並不是最好的方法。 –

+0

是你的每一個edittext一個片段? –

0

In onBackPressed()。您可以查看當前可見Fragment

public class MyActivity extends Activity 
{ 
    @Override 
    public void onBackPressed(){ 
     if(yourFragment1.isVisible()) { 
      ... 
     }else if(yourFragment2.isVisible(){ 
      ... 
     } 
    } 
} 
+0

你好,這樣做似乎沒有工作,如果if isVisible()從來沒有做過。 –