-
-
Notifications
You must be signed in to change notification settings - Fork 57
基础使用
xuexiangjys edited this page Oct 4, 2020
·
1 revision
使用XPage,Activity必须要继承
XPageActivity
,Fragment必须要继承XPageFragment
,否则将无法调用页面跳转的openPage
方法。
- 使用
openPage
即可打开页面,入参可为跳转类的类名,也可以是类的标识(@Page标注的name字段)
// 使用类名打开
openPage(TestFragment.class);
// 使用标识打开
openPage("TestFragment");
- 使用
popToBack
即可关闭页面。
// 关闭当前页,返回上一页
popToBack();
// 关闭当前页并跳转至某个页面
popToBack("popBackName", null);
- 1.使用
openPageForResult
即可,类似Activity里的startActivityForResult
。
openPageForResult(TestFragment.class, null, REQUEST_CODE);
- 2.使用
setFragmentResult
来设置页面关闭的返回值,类似Activity里的setResult
方法。
// 设置返回的数据,类似Activity里的setResult
Intent intent = new Intent();
intent.putExtra(KEY_BACK_DATA, "==【返回的数据】==");
setFragmentResult(500, intent);
// 返回操作
popToBack();
- 3.重写Fragment的
onFragmentResult
方法来接收返回的数据,类似Activity里的onActivityResult
方法。
@Override
public void onFragmentResult(int requestCode, int resultCode, Intent data) {
super.onFragmentResult(requestCode, resultCode, data);
if (data != null) {
Bundle extras = data.getExtras();
XToastUtils.toast("requestCode:" + requestCode + " resultCode:" + resultCode + " data:" + extras.getString(TestFragment.KEY_BACK_DATA));
}
}
- 使用
openPage
打开页面时,可传入Bundle作为参数。
// 设置需要传递的参数
Bundle params = new Bundle();
params.putBoolean(DateReceiveFragment.KEY_IS_NEED_BACK, false);
int id = (int) (Math.random() * 100);
params.putString(DateReceiveFragment.KEY_EVENT_NAME, "事件" + id);
params.putString(DateReceiveFragment.KEY_EVENT_DATA, "事件" + id + "携带的数据");
// 把参数传入
openPage(DateReceiveFragment.class, params);
- 数据接收
数据接收和普通Fragment接收数据一样,使用getArguments
获取传入的数据。
Bundle arguments = getArguments();
String eventName = arguments.getString(DateReceiveFragment.KEY_EVENT_NAME);
String eventData = arguments.getString(DateReceiveFragment.KEY_EVENT_DATA);
页面转场动画可以动态设置,也可以静态设置。
在我们使用@Page
进行页面注册的时候,我们可以静态设置转场动画、默认参数、拓展字段等。
Page注解的属性表:
属性名 | 类型 | 默认值 | 备注 |
---|---|---|---|
name | String | 注解类的类名 | 页面的名称、唯一标识符 |
params | String[] | {""} | 静态设置默认参数 |
anim | CoreAnim | CoreAnim.slide | 页面转场动画 |
extra | int | -1 | 拓展字段 |
使用openPage
打开页面时,可传入CoreAnim枚举设置页面转场动画。
switch(position) {
case 0:
openPage(TestFragment.PAGE_NAME, null, CoreAnim.none);//没有动画
break;
case 1:
openPage(TestFragment.PAGE_NAME, null, CoreAnim.present);//由下到上动画
break;
case 2:
openPage(TestFragment.PAGE_NAME, null, CoreAnim.slide);//从左到右动画
break;
case 3:
openPage(TestFragment.PAGE_NAME, null, CoreAnim.fade);//渐变
break;
case 4:
openPage(TestFragment.PAGE_NAME, null, CoreAnim.zoom);//放大
break;
default:
break;
}
//自定义动画
openPage(TestFragment.PAGE_NAME, null, new int[]{
// OpenEnterAnimation, 页面打开进场动画
R.anim.custom_open_enter,
// OpenExitAnimation, 页面打开退场动画
R.anim.custom_open_exit,
// CloseEnterAnimation, 页面关闭进场动画
R.anim.custom_close_enter,
// CloseExitAnimation, 页面关闭退场动画
R.anim.custom_close_exit
});