页面刷新的几种方式

     回退页面时常有刷新数据的需求,总结有以下几种方式

1.onResume()方法

       activity或fragment页面中(简称原页面)启动新的页面(简称新页面),新页面返回时需要原页面刷新数据,观察他们的生命周期可以看出,启动新的页面,原页面会依次调用onPause(), and onStop()方法,当新的页面关闭返回时,原页面会调用onStart(),onResume(),因此把加载数据放到onResume()方法中即可

    @Override
	public void onResume() {
	   super.onResume();
	   getData();//加载数据
	}

2.startActivityForResult方法

三种情况

a.用新页面关闭的默认码,原页面就刷新

设置返回码

private int requestCode = 0X5;//返回码大于零
启动新页面

startActivityForResult(new Intent(context,NewActivity.class).putExtras(bundle), requestCode);
//携带bundle启动新页面

新页面关闭时会自动调用Activity.RESULT_CANCELED,不需要在新页面写结果码代码

原页面刷新数据:

	@Override
	public void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		if (requestCode == this.requestCode && resultCode == Activity.RESULT_CANCELED) {
			//刷新数据
		}
	}

b.改写新页面关闭时的默认码,原页面刷新

设置结果码为RESULT_OK
覆写finish( )方法
		@Override
	public void finish() {
		setResult(RESULT_OK);
		super.finish();
	}

原页面刷新数据:
@Override
	public void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		if (requestCode == this.requestCode && resultCode == Activity.RESULT_OK) {
		//加载数据
		}
	}

c.新页面有特定操作,比如提交数据,原页面才刷新数据

可以在新页面设置requestCode,这也是最通用的方法,不 累述

3.其他方法

接口回调,广播,观察者模式

你可能感兴趣的:(android)