正如title说的,是否有人知道如何实现OnBackPressed功能,就像在活动中一样,但在片段视图中?当我在片段中使用onKey、onKeyDown或onBackPressed时,它不起作用-- app即将关闭。当按下“后退”按钮时,我希望执行特定的代码,因为在其中一个片段中,我有ListView,其中包含依赖于用户操作的数据。
因此,当按下back时,我想修改变量的值(“类别”和“部分”),用特定的数据填充ListView (因此修改一些值,因为用户单击了一些东西,并刷新了这个ListView),给人一种用户正在返回(从部件到类别并关闭应用程序)的感觉。
但正如我提到的,当我使用onKey、onKeyDown或onBackPressed时,app正在关闭.例如,当我在我的片段类中包括:
public void onBackPressed() {
Toast.makeText(getActivity(), "AAAA", Toast.LENGTH_LONG).show();
}吐司不会出现。用"onKeyDown“和"onKey”-同样的情况.我在这里做错了什么,有什么想法吗?
发布于 2014-07-10 12:30:43
终于明白了。在从方法"ActionBarActivity“到"onNavigationDrawerItemSelected”的“onNavigationDrawerItemSelected”中,我不得不将“片段newFragment”的声明移到该方法之外,以便使其在整个类中可用。然后,我必须在我的"OnBackPressed“中添加"ActionBarActivity”,如下所示:
@Override
public void onBackPressed() {
if (!newFragment.onBackPressed()) {
super.onBackPressed();
}
}最后,在我的片段中还包括了onBackPressed:
public boolean onBackPressed() {
if (part != -1) {
part = -1;
toAdd = "" + category + "_";
updateList();
return true;
}
return false;
}就像我想要的那样。当我向后推时,当我的片段中的变量"part“不是-1时,它将执行上面定义的操作,将true返回到"ActionBarActivity”,这样应用程序就不会关闭。但是,在我的片段中,变量为-1时,onBackPressed应用程序将返回主视图,当用户向后推时,应用程序将关闭。这就是我想要的!谢谢大家的帮助!
发布于 2014-07-09 22:19:21
回答你的第一句话:
正如title说的,是否有人知道如何实现OnBackPressed功能,就像在活动中一样,但在片段视图中?
要使back按钮与片段一起工作,您必须将它们添加到后台。这应该会触发您想要的函数。
// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();发布于 2015-05-29 09:47:31
@Override
public void onBackPressed() {
super.onBackPressed();
Intent register = new Intent(PollCreateCommunities_Activity.this, PollActivity.class);
startActivity(register);
finish();
}https://stackoverflow.com/questions/24664532
复制相似问题