首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在退出转换之前更新源活动

在退出转换之前更新源活动
EN

Stack Overflow用户
提问于 2015-12-22 19:15:18
回答 2查看 989关注 0票数 16

我需要关于活动之间转换的帮助:

我有两个活动A和B,它们都有一个具有相同图像列表的ViewPager。每个页面都有一个transitionName等于​​​​​​​​image_x​​​​的ImageView,其中​​​​​​​​x是页面索引。

A启动活动B,调用ActivityOptionsCompat.makeSceneTransitionAnimation,enter转换完全正常。

问题如下:当我关闭活动B时,退出转换不会在活动B的相同位置初始化活动A的视图分页。

当用户关闭B时,后者设置结果中的当前页面位置。在活动A的onActivityResult中,我调用了setCurrentItem,其行为显示在gif中。

有没有办法在退出转换开始之前更新活动A?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-08 19:22:06

如果您在ActivityA).中使用setCurrentItem而不是在中使用onActivityResult,您应该能够做到这一点

只需确保您:

在完成ActivityB,之前设置

  1. 设置结果(或者使用setResult(int resultCode)supportFinishAfterTransition() finishAfterTransition()代替常规finish()以关闭ActivityB.

总结一下:

ActivityB

代码语言:javascript
复制
public void close(){
    Intent data = new Intent();
    data.putExtra(KEY_CURRENT_ITEM, mFullscreenViewPager.getCurrentItem());
    setResult(RESULT_CODE, data);
    supportFinishAfterTransition();
}

ActivityA

代码语言:javascript
复制
@Override
public void onActivityReenter(int resultCode, Intent data) {
    super.onActivityReenter(resultCode, data);
    if (data.hasExtra(KEY_CURRENT_ITEM)){
         mViewPager.setCurrentItem(data.getIntExtra(KEY_CURRENT_ITEM, 0), false);
    }
}
票数 7
EN

Stack Overflow用户

发布于 2016-01-09 15:14:24

我已经有了解决方案。

Activity 1.在两个活动之间工作的创建接口类:demoClass.java

代码语言:javascript
复制
public class demoClass {

public static demoClass instance;
public demoInterface mCallback;

public static demoClass getInstance() {
    if(instance == null) {
        instance = new demoClass();
    }
    return instance;
}

public void setListener(demoInterface callback) {
    this.mCallback = callback;
}

public void changePage(int which) {
    if(this.mCallback != null) {
        this.mCallback.changePage(which);
    }
}


public interface demoInterface {
    public void changePage(int which);
}

}

2.从Activity B调用接口方法:

代码语言:javascript
复制
demoClass.getInstance().changePage(mFullscreenViewPager.getCurrentItem());

3.来自Activity 的A,实现接口并注册侦听接口:

代码语言:javascript
复制
public class ActivityA extends Activity implements demoClass.demoInterface {
...
} 
---------------------
demoClass.getInstance().setListener(ActivityA.this);

4.在A中实现changePage(int)方法:

代码语言:javascript
复制
@Override
public void changePage(int which) {
    mViewPager.setCurrentItem(page);
}

Explaination

当Activity B页面更改时,通过demoClass.getInstance().changePage(index)向接口demoClass.demoInterface报告事件。这最终将调用Activity A的方法changePage(int),我们将在旅途中更改ViewPager内容。

结果

您可以在GIF here上检查输出

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34414613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档