【问题标题】:Multiple Instance of same Activity for different Intent Object不同意图对象的同一活动的多个实例
【发布时间】:2015-04-26 03:30:43
【问题描述】:

我的应用中有两个活动:-
主要活动:- 显示城市列表
CityActivity:- 显示所选城市的详细信息。

问题是:- 如果我在 MainActivity 中选择一个城市“NewYork”,它会将我带到 CityActivity 并显示 NewYork 详细信息。
如果返回并选择“旧金山”,那么它会将我带到 CityActivity 并显示旧金山的详细信息。

现在,当我按下手机设备的返回按钮时,它会将我带到每个城市活动“纽约”、“旧金山”……就像浏览器的返回按钮一样。

我尝试了多个选项来修复它,但它没有帮助我:-
a.) 在 CityActivity 中调用 finish()。
b.) 在 Manifest 文件中添加 android:launchMode= "singleInstance"。

我想在这里实现的是,如果带有 NewYork 对象的 CityActivity 存在于内存中并且我尝试选择“旧金山”城市,那么它应该使用“纽约”意图对象销毁活动并使用“旧金山”创建一个新活动" 意图对象。

【问题讨论】:

    标签: android android-intent


    【解决方案1】:

    开始城市活动时设置意图标志“无历史记录”

    【讨论】:

    • 试过了,部分有效。它确实从堆栈中删除了活动。但我想要的只是在使用新城市对象启动活动时删除它,否则显示旧城市对象。
    • 尝试将意图标志设置为 FLAG_ACTIVITY_REORDER_TO_FRONT
    • 完美!正是我想要的。非常感谢!
    【解决方案2】:

    在你的城市详情活动中添加这个

    @Override
    public void onBackPressed() {
     finish();
    }
    

    就是这样

    编辑 2: 打开详细信息活动时,像这样调用它

     Intent i= new Intent(MainActivity.this,DetailsActivity.class);
     i.putExtra("Name",Name);
     ....
     startActivity(i);
     finish()//add this 
    

    在详细信息活动中后按时执行此操作

    @Override
    public void onBackPressed() {
     Intent i= new Intent(DetailsActivity.this,MainActivity.class);
      startActivity(i);//starting main activity
     finish();
    }
    

    【讨论】:

    • 保留旧的活动并不总是后退。有时活动仍然存在,因为通知来了,它需要到主页。从那里我选择另一个城市,然后两个城市的 CityActivity 都在堆栈中。你还有什么建议吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    相关资源
    最近更新 更多