在我的应用程序中我有导航抽屉,所以我有一个MainActivity,其余的是片段。我的应用程序工作正常。每当我按下后退按钮它重定向到上一个fragment.it工作正常。但我想要的是成功付款后我显示成功的付款页面,在此页面上当用户按下后退按钮我想重定向到HomeFragment,但现在它去了到Placeorder片段。
@Override
public void onBackPressed() {
if(getFragmentManager().getBackStackEntryCount() == 0) {
super.onBackPressed();
}
else {
getFragmentManager().popBackStack();
}
}
答案 0 :(得分:0)
你应该在抽象类片段
中模拟如下的函数<li><a href="Very_long_text_in_this_line">'Very long text<br /> in this line'</a>
</li>
在MainActivity中,您将处理此功能
/**
* Handle "Back" key pressed.
* @return TRUE if the "Back" key pressed was handled. FALSE indicate it's not handled and parent class can handle it.
*/
public abstract boolean onBackPressed()
答案 1 :(得分:0)
使用:
fragmentTransaction.replace(R.id.fragment_container, mFeedFragment);
fragmentTransaction.commit();
不要这样做:
fragmentTransaction.addToBackStack(null);
答案 2 :(得分:0)
一种方法是在打开新片段时保存先前的片段(previousFragment
)变量,并在第一个或占位符片段时将其设为null ....然后检查previousFragment
内onBackPressed
的值1}}方法,如果为null,则执行退出操作,否则将片段替换为previousFragment
,您将通过该片段返回上一个片段。
答案 3 :(得分:0)
onBackPressed()
里面的是这样的:
@Override
public void onBackPressed() {
if(getSupportFragmentManger.findFragmentByTag("paymentFragment") != null){
//add homeFragment;
}
else{
if(getFragmentManager().getBackStackEntryCount() == 0) {
super.onBackPressed();
}
else {
getFragmentManager().popBackStack();
}
}
}
答案 4 :(得分:0)
覆盖您的public class ComponentService implements FieldGroupFieldFactory {
/**
* Create Distributor ComboBox
*/
public ComboBox createComboBoxDistributor(String caption, boolean required) {
ComboBox c = new ComboBox(caption);
BeanItemContainer<Distributor> beans = new BeanItemContainer<Distributor>(Distributor.class);
beans.addAll(distributorService.find(null));
c.setContainerDataSource(beans);
c.setFilteringMode(FilteringMode.CONTAINS);
c.setRequired(required);
return c;
}
}
ComboBox comboDistributor = componentService.createComboBoxDistributor("Disributor", false);
comboDistributor.setValue(this.entity.getCustomer().getDistributor());
方法:
onBackPress
答案 5 :(得分:0)
你可以在Application类中设置一些全局变量(当付款成功时为true,否则为false),并且在你的活动的onbackpressed中只检查变量是否为真。然后在你的活动的反向调用这个函数。
public void clearBackStack() {
FragmentManager manager = getSupportFragmentManager();
if (manager.getBackStackEntryCount() > 0) {
FragmentManager.BackStackEntry first = manager.getBackStackEntryAt(0);
manager.popBackStack(first.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
}
答案 6 :(得分:0)
遵循这个简单的方法 将整数声明为
public int count;
在主页
中将此计数初始化为count=0
现在将其包含在您的主要活动中
@Override
public void onBackPressed() {
if (count == 1) {
if (exit) {
super.onBackPressed();
return;
} else {
Toast.makeText(this, "Press Back again to Exit.", Toast.LENGTH_SHORT).show();
exit = true;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
exit = false;
}
}, 2000);
}
}else {
toolbar.setTitle("Home");
mDrawerLayout.closeDrawers();
count=1;
display(0);
}
}