我有一项活动主要活动,其中有两个片段 ListFragment 和 DetailFragment 。当我在__Detail Fragment上时,我不想要按两次背压。
主要活动
@Override
public void onBackPressed() {
if (!isViewClicked) {
isViewClicked = true;
super.onBackPressed();
}
这里我只想阻止两次按下后退按钮。 但这似乎不起作用。 这里通过阻止我的意思,一旦按下,从详细信息到列表。如果按了一个应用程序最小化,我不想发生。
答案 0 :(得分:0)
如果您的DetailFragment
中有Activity
个实例,则可以使用该片段的isAdded()
方法检查当前是否已将Activity
添加到getSupportFragmentManager().findFragmentByTag(TAG);
为了找到片段的实例,您可以使用
getSupportFragmentManager().findFragmentById(ID);
或强>
import jenkins.model.Jenkins
job = Jenkins.instance.getJob("freestyle-test")
numbuilds = job.builds.size()
if (numbuilds == 0) { return }
lastbuild = job.builds[numbuilds - 1]
println 'JOB: ' + job.fullName
println ' -> lastbuild: ' + lastbuild.displayName + ' = ' + lastbuild.result
println ' -> lastbuild someEnv: ' + build.environment.get("SOME_ENV")
答案 1 :(得分:0)
我没有准确地告诉你,但我正在给你我在我的项目中使用的技巧。我在你的代码中编辑它。我不知道什么是 isViewClicked 。但 请检查它是否对您有用。
@Override
public void onBackPressed() {
int count = this.getSupportFragmentManager().getBackStackEntryCount();
if(count != 0)
{
//Do your stuff
}else if (!isViewClicked) {
isViewClicked = true;
super.onBackPressed();
}
}
答案 2 :(得分:0)
只需将此添加到包含ListFragment
和DetailedFragment
的活动即可。从onBackPressed()
移除ListFragment
:
@Override
public void onBackPressed() {
}
希望这有帮助。
答案 3 :(得分:0)
好的,我试着理解你的问题。根据我的理解
您有活动A - 列表片段>细节片段。
当你按下细节片段上的后退按钮时,你会回到列表片段,它是你需要的。 但是,从List Fragment再次按下后退按钮不应该关闭/退出您的应用程序。
所以这就是你需要做的。
将列表片段添加到 MainActivity ,如下所示:
private FragmentManager mFragmentManager;
private FragmentTransaction mFragmentTransaction;
Fragment listFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Listfragment here
listFragment = new ListFragment();
mFragmentManager = getSupportFragmentManager();
mFragmentTransaction = mFragmentManager.beginTransaction();
mFragmentTransaction.replace(R.id.frame, listFragment, "List");
mFragmentTransaction.addToBackStack("List");
mFragmentTransaction.commit(); }
同样在List Fragment中调用Detail Fragment,如:
mListview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Fragment detailFragment = new DetailFragment();
mFragmentManager = getFragmentManager();
mFragmentTransaction = mFragmentManager.beginTransaction();
mFragmentTransaction.replace(R.id.frame, detailFragment, "Detail");
mFragmentTransaction.addToBackStack("Detail");
mFragmentTransaction.commit();
}
});
在你 MainActivity
中 @Override
public void onBackPressed() {
if(listFragment.isVisible()){
**//Do Nothing - DOES NOT CLOSE THE APP**
}
else{
super.onBackPressed();
}
}
注意:
除非你有充分的理由,否则请不要这样做,因为打破预期的操作模式会对整个平台造成轻微伤害
答案 4 :(得分:0)
如果您不想最小化您的应用,则应在MainActivity
或ListFragement
下面写下代码,但我建议MainActivity
@Override
public void onBackPressed() {
}