我需要关于活动之间转换的帮助:
我有两个活动A和B,它们都有一个具有相同图像列表的ViewPager。每个页面都有一个transitionName
等于image_x的ImageView,其中x是页面索引。
A启动活动B,调用ActivityOptionsCompat.makeSceneTransitionAnimation
,enter转换完全正常。
问题如下:当我关闭活动B时,退出转换不会在活动B的相同位置初始化活动A的视图分页。
当用户关闭B时,后者设置结果中的当前页面位置。在活动A的onActivityResult
中,我调用了setCurrentItem
,其行为显示在gif中。
有没有办法在退出转换开始之前更新活动A?
发布于 2016-01-08 19:22:06
如果您在ActivityA
).中使用setCurrentItem
而不是在中使用onActivityResult
,您应该能够做到这一点
只需确保您:
在完成ActivityB
,之前设置
setResult(int resultCode)
或setResult(int resultCode)
或supportFinishAfterTransition()
finishAfterTransition()
代替常规finish()
以关闭ActivityB
.总结一下:
在ActivityB
中
public void close(){
Intent data = new Intent();
data.putExtra(KEY_CURRENT_ITEM, mFullscreenViewPager.getCurrentItem());
setResult(RESULT_CODE, data);
supportFinishAfterTransition();
}
在ActivityA
中
@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);
}
}
发布于 2016-01-09 15:14:24
我已经有了解决方案。
Activity 1.在两个活动之间工作的创建接口类:demoClass.java
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调用接口方法:
demoClass.getInstance().changePage(mFullscreenViewPager.getCurrentItem());
3.来自Activity 的A,实现接口并注册侦听接口:
public class ActivityA extends Activity implements demoClass.demoInterface {
...
}
---------------------
demoClass.getInstance().setListener(ActivityA.this);
4.在A中实现changePage(int)
方法:
@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上检查输出
https://stackoverflow.com/questions/34414613
复制相似问题