android中activity管理及界面传值

原创 2017年01月03日 12:12:08

android中利用application类中的ActivityLifecycleCallbacks接口实现activity的管理及界面传值


简化界面跳转,和界面之间的传值和获取

使用方法:

MainActivity中

AContext.push(SecondActivity.class, "SecondActivity");//跳转到SecondActivity中并传递一个字符串

String msg = AContext.getPushData();// SecondActivity中获取数据

ThreeActivity中:

AContext.pull("2", 3);//关闭当前activity并传递两个参数,

SecondActivity获取返回的数据

if (AContext.getPullData() != null) {

// 获取ThreeActivity返回的数据

String one = AContext.getPullData(0);

int two = AContext.getPullData(1);

AContext.show("第一页传过来的值:" +one + ";" + two);

}


/**

 * activity管理类

 *

 */

publicclass ActivityManagerimplements ActivityLifecycleCallbacks {


private Activity activity;


private ArrayList<Activity> activityList = new ArrayList<Activity>();


public ArrayList<Activity> getActivityList() {

returnactivityList;

}


public void exitLogin() {

Iterator<Activity> iterator =activityList.iterator();

while (iterator.hasNext() &&activityList.size() != 1) {

iterator.next().finish();

iterator.remove();

}

}


public void setActivity(Activityactivity) {

this.activity =activity;

}


public Activity getCurrentActivity() {

returnactivity;

}


/**

* 在activity创建时记录当前activity,并添加到集合中

*/

@Override

public void onActivityCreated(Activityactivity, Bundle savedInstanceState) {

Log.e("TAG","onActivityCreated");

setActivity(activity);

activityList.add(activity);

}


@Override

public void onActivityStarted(Activityactivity) {

Log.e("TAG","onActivityStarted");

}


/**

* 在resume中进行更新当前的activity

*/

@Override

public void onActivityResumed(Activityactivity) {

setActivity(activity);

Log.e("TAG","onActivityResumed");

}


@Override

public void onActivityPaused(Activityactivity) {

Log.e("TAG","onActivityPaused");

}


@Override

public void onActivityStopped(Activityactivity) {

Log.e("TAG","onActivityStopped");

}


@Override

public void onActivitySaveInstanceState(Activityactivity, Bundle outState) {

Log.e("TAG","onActivitySaveInstanceState");

}


/**

* 在activity销毁时移除

*/

@Override

public void onActivityDestroyed(Activityactivity) {

Log.e("TAG","onActivityDestroyed");

activityList.remove(activity);

}


private Object[] _pullData;


/**

* 获取回退前activity传递过来的参数

* @param position

* @return

*/

public <T extends Object> T getPullData(intposition) {

return isPullEmpty(position) ? (T)_pullData[position] : null;

}


private boolean isPullEmpty(intposition) {

return_pullData != null &&_pullData.length > position;

}


/**

* 关闭activity并回传

* @param data

*/

public void pullCurrentAcivity(Object...data) {

_pullData =data;

_pushData =null;

activity.finish();

}


/**

* finish

*/

public void pullActivity() {

pullCurrentAcivity();

}


/**

* push

*/

private Object[] _pushData;


/**

* 利用索引获取跳转前界面传递的数据

* @param position

* @return

*/

public <T extends Object> T getPushData(intposition) {

return isPushEmpty(position) ? (T)_pushData[position] : null;

}


private boolean isPushEmpty(intposition) {

return_pushData != null &&_pushData.length > position;

}


/**

* 跳转activity并传递参数

* @param activityClass

* @param pushData

*/

public void pushActivity(Class<?>activityClass, Object... pushData) {

_pushData =pushData;

_pullData =null;

Intent intent = new Intent(activity, activityClass);

activity.startActivity(intent);

}


          在AContext类中初始化ActivityManager并注册

        public staticvoid init(Application currentApplication) {

sApplication =currentApplication;

sActivityManager =new ActivityManager();

sApplication.registerActivityLifecycleCallbacks(sActivityManager);

}





通过application注册监听activity

public class InitApplicationextends Application {

@Override

public void onCreate() {

super.onCreate();

/**

* 初始化注册activity生命周期监听

*/

AContext.init(this);

}

}


最后在AndroidManifest.xml中注册application


csdn下载地址:http://download.csdn.net/detail/u010945409/9727455

github地址: https://github.com/xieyuhai/activity




版权声明:本文为博主原创文章,未经博主允许不得转载。

Android实现两个Activity界面的跳转并传值

Android实现Activity两个界面的跳转和传值                 前些天试着做了一个音乐播放器,很简单的一个程序,不过里面涉及到的知识需要我好好总结下。          ...
  • zhangdongxuan
  • zhangdongxuan
  • 2015年07月17日 10:50
  • 2777

Android中实现activity的页面跳转并传值

一个Android应用程序很少会只有一个Activity对象,如何在多个Activity之间进行跳转,而且能够互相传值是一个很基本的要求。 本次我们就讲一下,Android中页面跳转以及传值的几种方...
  • wanghaoyuhappy
  • wanghaoyuhappy
  • 2016年08月26日 15:28
  • 2756

【android】关于多个activity页面跳转,跳过中间页面返回前边页面传值

这是一个面试中被问到的题目,答得不是很好,后来经过自己敲代码尝试发现了一个解决思路。 我可以把这个问题具体化。比如有一个需求,给你三个页面A,B,C,要求A可以跳转到B页面,并传值,B可以跳转到C页面...
  • github_36719758
  • github_36719758
  • 2017年04月01日 17:21
  • 1992

Android 创建一个activity 及创建Intent对象跳转界面并传值

一、创建一个activity 步骤1、创建一个java类,该类必须继承Android.app.Activity 步骤2、重写该类的onCreate(Bundle)方法 步骤3、创建一个布局文件r...
  • u012716909
  • u012716909
  • 2016年05月04日 16:56
  • 1043

Android实现两个Activity界面的跳转并传值

Android实现Activity两个界面的跳转和传值                 前些天试着做了一个音乐播放器,很简单的一个程序,不过里面涉及到的知识需要我好好总结下。          ...
  • zhangdongxuan
  • zhangdongxuan
  • 2015年07月17日 10:50
  • 2777

android-Activity跳转 界面传值 Activity跳转模式整理

UIKit中包含了UIGestureRecognizer类,用于检测发生在设备中的手势。UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,它有下面一些子类用于处理具体的手势...
  • daiyelang
  • daiyelang
  • 2013年11月22日 17:35
  • 875

android开发中Intent在两个Activity间传值示例

  • 2011年04月07日 20:09
  • 42KB
  • 下载

android两个activity相互传值

  • 2012年08月23日 13:05
  • 55KB
  • 下载

Android-Fragment和Activity的传值通例子

  • 2016年04月02日 11:15
  • 5.67MB
  • 下载

Android Activity间传值

  • 2015年05月22日 10:02
  • 1.45MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android中activity管理及界面传值
举报原因:
原因补充:

(最多只允许输入30个字)