使用 switch 语句处理片段中的 onBackPressed()
using switch statement to handle onBackPressed() in fragments
我正在尝试为每个片段处理不同的 onBackPressed。为此,我想使用一个 switch 语句,其中的案例取决于当前显示的片段。
在我的主要我有。但不知道在 switch 语句中使用什么。
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,其中 de cases 取决于此时显示的片段。
在onBackPressed()
。您可以检查当前可见 Fragment
public class MyActivity extends Activity
{
@Override
public void onBackPressed(){
if(yourFragment1.isVisible()) {
...
}else if(yourFragment2.isVisible(){
...
}
}
}
不要在 activity 的单个 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;
}
} );
我正在尝试为每个片段处理不同的 onBackPressed。为此,我想使用一个 switch 语句,其中的案例取决于当前显示的片段。 在我的主要我有。但不知道在 switch 语句中使用什么。
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,其中 de cases 取决于此时显示的片段。
在onBackPressed()
。您可以检查当前可见 Fragment
public class MyActivity extends Activity
{
@Override
public void onBackPressed(){
if(yourFragment1.isVisible()) {
...
}else if(yourFragment2.isVisible(){
...
}
}
}
不要在 activity 的单个 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;
}
} );