Android片段手柄后退按钮按我的活动中有一些片段[1], [2], [3], [4], [5], [6]在Back Button Press中,如果当前活动片段为[2],则必须从[2]返回到[1],否则什么也不做。做这件事的最佳做法是什么?编辑:申请不得从[3][6]返回[2]。
3 回答
炎炎设计
TA贡献1808条经验 获得超4个赞
addToBackStack()FragmentTransaction:
FragmentTransaction tx = fragmentManager.beginTransation();tx.replace( R.id.fragment, new MyFragment() ).addToBackStack( "tag" ).commit();
OnKeyListener
//You need to add the following line for this solution to work; thanks skayredfragment.getView().setFocusableInTouchMode(true);fragment.getView().requestFocus();fragment.getView().setOnKeyListener( new OnKeyListener(){
@Override
public boolean onKey( View v, int keyCode, KeyEvent event )
{
if( keyCode == KeyEvent.KEYCODE_BACK )
{
return true;
}
return false;
}} );
沧海一幻觉
TA贡献1824条经验 获得超5个赞
private final static String TAG_FRAGMENT = "TAG_FRAGMENT";private void showFragment() {
final Myfragment fragment = new MyFragment();
final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment, fragment, TAG_FRAGMENT);
transaction.addToBackStack(null);
transaction.commit();}@Overridepublic void onBackPressed() {
final Myfragment fragment = (Myfragment) getSupportFragmentManager().findFragmentByTag(TAG_FRAGMENT);
if (fragment.allowBackPressed()) { // and then you define a method allowBackPressed with the logic to allow back pressed or not
super.onBackPressed();
}}
手掌心
TA贡献1942条经验 获得超3个赞
view.setFocusableInTouchMode(true);
view.requestFocus();
view.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
Log.i(tag, "keyCode: " + keyCode);
if( keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
Log.i(tag, "onKey Back listener is working!!!");
getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
return true;
}
return false;
}
});- 3 回答
- 0 关注
- 515 浏览
添加回答
举报
0/150
提交
取消
