在Backpressed上启动自定义活动将两次启动活动

时间:2018-11-07 20:08:39

标签: android onbackpressed

我有一个非常奇怪的问题,我无法完全解决。我已经思考了好几个小时,但我完全不知道为什么我的代码会像这样。

我有一个Viewpager,可以从中删除图像,以产生实时更新的效果,每次删除照片时,我都会打开相同的活动,因此viewpager's的内容将立即更改并相应地。

由于这个原因,我重写了onBackPressed()以确保启动此方法时,用户返回到过去的真实活动,而不是原始图像的活动。我已经阅读了有关此内容的文章,并尝试执行一些操作,例如删除super方法并添加finish()方法,但似乎无济于事。

@Override
public void onBackPressed() {

    //creates two instances of AccountApartementActivity

    overridePendingTransition(0, 0);

    add_button_view.setVisibility(View.INVISIBLE);
    delete_button_view.setVisibility(View.INVISIBLE);

    Intent i = new Intent(ApartementEditActivity.this, AccountAndApartementActivity.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    i.putExtra("fromActivity", "2");
    startActivity(i);
    finish();
    overridePendingTransition(0, 0);

}

在这两个活动的生命周期方法中,我都没有重写的代码编写了告诉应用程序两次创建相同活动的代码,或者我以某种方式忽略了它。

最奇怪的是,这一天前还可以,但是今天,我更改了PagerAdapter方法内部的变量之一的数据类型,并且自从onBackPressed()方法被破坏以来。

如果我缺少明显的东西,请告诉我,这经常发生。

1 个答案:

答案 0 :(得分:0)

我认为以这种方式操纵活动堆栈不是最佳实践。您最终可能会耗尽内存。

我不知道您的照片是如何组织的,可能是使用诸如gridview或recyclerview的容器布局?

然后,您应该使用适配器和notifyDataSetChanged方法更新视图。

祝你好运!