Android 从activityA跳转传值到activityB中 然后在B中把A的传过来的数据保存到数据库怎么做

Android 从activityA跳转传值到activityB中 然后在B中把A的传过来的数据保存到数据库怎么做,第1张

Intent intent = new Intent()

//用intent.putExtra(String name, String value)来传递参数。

intent.putExtra("one",number1)

intent.putExtra("two", number2)

intent.setClass(activity1.this, activity2.class)

startActivity(intent)

然后在activity2中

Intent intent1 = getIntent()

// 用intent1.getStringExtra()来得到activity1发过来的字符串。

String one = intent1.getStringExtra("one")

String two = intent1.getStringExtra("two")

然后在sql语句获取值存储。

做个activity的管理队列就好了,自己写个activity的基类,在基类activity的oncreate方法中调用addActivity,onDestroy中调用removeActivity。这些方法都写到自定义的application类里,在需要关闭的时候,调用close方法,在close方法里判断下activity是否是A的实例,时就不关闭A,大概思路就是这样,public List activityList = new LinkedList()// 添加Activity到容器中 public void addActivity(BaseActivityactivity) { activityList.add(activity)} public void close() { for (Activity activity : activityList) { //Log.e("", "close:" + activity.getLocalClassName())if(activity != null ){ activity.finish()} } activityList = new LinkedList()} public void removeActivity(Activity activity) { int i =0for (Activity ac : activityList) { //Log.e("", "close:" + activity.getLocalClassName())if(ac.equals(activity)) { activityList.remove(ac)break} i++}

可以建一个list 存放这些不是登录的activity

然后返回键的时候...把LIST中的activity finish

这是一种方法

问题如下:

多activity中退出整个程序,例如从A->B->C->D,这时我需要从D直接退出程序。

解决问题:

我们知道Android的窗口类提供了历史栈,我们可以通过stack的原理来巧妙的实现,这里我们在D窗口打开A窗口时在Intent中直接加入标志 Intent.FLAG_ACTIVITY_CLEAR_TOP,再次开启A时将会清除该进程空间的所有Activity。.

在D中使用下面的代码:*

Intent tent = new Intent()

tent.setClass(D.this, A.class)

tent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)

startActivity( tent )

finish()

在A中加入下面的代码:*

@Override

protected void onNewIntent(Intent intent) {

System.out.println("a Test is onNewIntent().............")

// TODO Auto-generated method stub

super.onNewIntent(intent)

//退出

if ((Intent.FLAG_ACTIVITY_CLEAR_TOP &intent.getFlags()) != 0) {

finish()

}

}

A的Manifest.xml配置成android:launchMode="singleTop" (A实例的启动模式,singleTop是和onNewIntent()结合使用的)

原理总结:

一般A是程序的入口点,从D起一个A的activity,加入标识Intent.FLAG_ACTIVITY_CLEAR_TOP这个过程中会把栈中B,C,都清理掉。因为A是android:launchMode="singleTop"' 不会调用oncreate(),而是响应onNewIntent()这时候判断Intent.FLAG_ACTIVITY_CLEAR_TOP,然后把A finish()掉。

栈中A,B,C,D全部被清理。所以整个程序退出了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6642024.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存