我找不到解决问题的方法。
我有几个片段(动态创建),但我的后退按钮根本不起作用, 按下它将关闭应用程序,无论片段是“活动”。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case R.id.itemAdd:
FragmentTransaction tx = getFragmentManager().beginTransaction();
Fragment fragment = new NeuesProduktFrag();
tx.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right,
R.anim.slide_in_left, R.anim.slide_out_right);
tx.replace(R.id.main, fragment);
tx.addToBackStack(null);
tx.commit();
return true;
一切正常,但在输入“NeuesProduktFrag”片段并按下后退按钮后我的应用程序关闭。尝试在不同的按钮等。 是否需要覆盖onBackPressed? addToBackStack应该不管怎么做?
答案 0 :(得分:5)
经过很长一段时间,这是我最后的代码:
@Override
public void onBackPressed() {
// initialize variables
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
// check to see if stack is empty
if (fm.getBackStackEntryCount() > 0) {
fm.popBackStack();
ft.commit();
}
else {
if (this.lastBackPressTime < System.currentTimeMillis() - 4000) {
Toast.makeText(this, "Nochmal drücken zum Beenden!", 4000).show();
this.lastBackPressTime = System.currentTimeMillis();
} else{
super.onBackPressed();
}
}
}
我在FragmentActivity中使用它并添加了一个双标签来最终关闭App。
答案 1 :(得分:4)
我想在支持库getFragmentManager()
中使用getSupportFragmentManager()
代替支持库FragmentActivity
时会出现问题。例如,当您想要PreferenceFragment
和setSupportActionBar()
时。
我已通过ActionBarActivity
的{{1}}实施复制粘贴onBackPressed()
来解决android.app.Activity
中的问题,并进行了一些更改:
@Override
public void onBackPressed() {
if (getFragmentManager().popBackStackImmediate()) return;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)
finish();
else
finishAfterTransition();
}
答案 2 :(得分:0)
我的代码从FragmentActivity更改为Activity。
编辑:输入错误
答案 3 :(得分:0)
按“后退”按钮退出应用程序
my_dict=dict()
my_dict['season']=['spring','summer','fall']
my_dict['sport']=['baseball','soccer']
name='bobs-_season_-_sport_'
def generate_all_replaced(name, d):
names = [name]
for k in d.keys():
names = [n.replace(f'_{k}_', v) for v in d[k] for n in names]
return names
print(generate_all_replaced(name, my_dict))