当前位置: 首页 > news >正文

机票酒店 网站建设提供设计的网站

机票酒店 网站建设,提供设计的网站,免费域名注册微信下载,广西建设科技在线网站android中经常会遇到从当前的Activity跳转到另外一个Activity的情况,通常情况下我们会直接选择用startActivity或者startActivityForResult。如果你对这两个方法还不知道的话可以去https://www.cnblogs.com/fuck1/p/5456337.html看看。本文不会告诉你怎么使用这个方…

android中经常会遇到从当前的Activity跳转到另外一个Activity的情况,通常情况下我们会直接选择用startActivity或者startActivityForResult。如果你对这两个方法还不知道的话可以去https://www.cnblogs.com/fuck1/p/5456337.html看看。本文不会告诉你怎么使用这个方法,而是会说说笔者自己遇到的问题以及解决办法。
事情的起因是我在项目中遇到这样一个问题就是要求从下一个界面传数据回来,当时第一反应是用startActivityForResult解决,当我把代码敲完过后一测试,我擦咧,结果没回来。我以为是我代码写错了(这段代码很简单怎么可能会错)最后找到答案是因为Activity的启动模式被这只成了singleTask。好吧,这个有点坑自己了。于是我就自己测试了四种不同模式下启动模式对该方法的影响,(如果你对Activity的四种启动模式还不是很了解可以到https://blog.csdn.net/qq994467433/article/details/83350698看看)结果还真的挺有意思的。话不多说上代码。

public class MainActivity extends AppCompatActivity implements View.OnClickListener {private Button standardButton, singleTopButton, singleTaskButton, singleInstanceButton;private static final String TAG = "MainActivity";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);standardButton = findViewById(R.id.standard_activity);standardButton.setOnClickListener(this);singleTopButton = findViewById(R.id.single_top_activity);singleTopButton.setOnClickListener(this);singleTaskButton = findViewById(R.id.single_task_activity);singleTaskButton.setOnClickListener(this);singleInstanceButton = findViewById(R.id.single_instance_activity);singleInstanceButton.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.standard_activity:Intent firstIntent = new Intent(MainActivity.this, StandardActivity.class);startActivityForResult(firstIntent, 1);break;case R.id.single_top_activity:Intent secondIntent = new Intent(MainActivity.this, SingleTopActivity.class);startActivityForResult(secondIntent, 2);break;case R.id.single_task_activity:Intent thirdIntent = new Intent(MainActivity.this, SingleTaskActivity.class);startActivityForResult(thirdIntent, 3);break;case R.id.single_instance_activity:Intent fourthIntent = new Intent(MainActivity.this, SingleInstanceActivity.class);startActivityForResult(fourthIntent, 4);break;}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);switch (requestCode) {case 1:if (resultCode == RESULT_OK){int standardActivityData = data.getIntExtra("StandardActivity",0);Log.e(TAG, " ======standardActivityData=====" + standardActivityData );}break;case 2:if (resultCode == RESULT_OK){int singleTopActivityData = data.getIntExtra("SingleTopActivity",0);Log.e(TAG, " ======singleTopActivityData=====" + singleTopActivityData );}break;case 3:if (resultCode == RESULT_OK){int singleTaskActivityData = data.getIntExtra("SingleTaskActivity",0);Log.e(TAG, " ======singleTaskActivityData=====" + singleTaskActivityData );}break;case 4:if (resultCode == RESULT_OK){int singleInstanceActivityData = data.getIntExtra("SingleInstanceActivity",0);Log.e(TAG, " ======singleInstanceActivityData=====" + singleInstanceActivityData );}break;}}
}

这里我在MainActivity里面放置了四个按钮用于启动四种不同模式下的Activity并在每个对应的Activity里面放置按钮来回传结果。并在onActivityResult方法中分别获取来自不同的Activity回传的数据。其中默认模式下的Activity代码如下

public class StandardActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_standard);findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.putExtra("StandardActivity",111111);setResult(RESULT_OK,intent);finish();}});}
}

其余Activity的类似。我们分别来看看结果吧。
1.standard模式下的数据

10-25 18:52:20.788 10014-10014/com.example.gzw.activitydemo E/MainActivity:  ======standardActivityData=====111111

可以看到这时候的数据是有传回来的。
2.singTop模式下的数据

10-25 18:53:57.838 10014-10014/com.example.gzw.activitydemo E/MainActivity:  ======singleTopActivityData=====222222

是的也有数据产生
3.singleInstance模式下
这个就厉害了,没有数据传回来。这个原理是什么我也不是很清楚,先当结论记住吧!
4.singleTask模式下
由于singleTask模式有可能会涉及到栈的变化,所以我分别测试了下。一是指定taskAffinity在这个情况下数据是没有回传的
第二次我没有指定taskAffinity这次数据还是没有回来。。。
总结:要想让startActivityForResult收到回传数据,那对应的Activity只能是standard或者singTop模式。
最后Demo的源码下载地址:https://download.csdn.net/download/qq994467433/10744616

http://www.yayakq.cn/news/638805/

相关文章:

  • 云南网站建设网站运营房地产公司网站建设方案
  • 天津市建设工程评标专家网站个人网站怎么申请
  • 做h的动漫在线观看网站同城便民网站开发
  • 广西南宁公司网站制作招聘公司怎么做网站
  • 淄博建站网络公司网络科技公司是传销吗
  • 网站建设 数据可视化营口网站建设开发制作
  • 亚马逊一般在哪些网站上做推广wordpress 连载
  • 为什么做网站比app便宜安徽论坛网站建设
  • 网站设置关于我们怎么做结构化数据 wordpress
  • 芗城区建设局网站高校校园网站建设
  • 创客贴网站建设武威网站制作公司哪个好
  • 集团门户网站建设方案上海网站建设网站优化app
  • 融水做的比较好的网站有哪些网推软件
  • 从零开始学习网站建设佛山美容院网站建设
  • 天津哪里可以做网站做vip视频网站侵权
  • 网站平台搭建要多少钱商城类的网站怎么做
  • 个人网站备案名称要求wordpress 分享后可见
  • 2018江苏省海门市建设局网站如何建立一家公司网站
  • 海南省住房和城市建设厅网站网站添加外链
  • html5 的网站关于企业网站开发与设计论文
  • 长沙正规企业网站制作平台网站流量分析怎么做
  • 查询域名后缀网站如何制作游戏
  • 郑州推广网站嘉兴优化公司
  • 设计方面的网站构建平台还是搭建平台
  • 云南网站搭建阿里虚拟主机无法安装wordpress
  • 网站推广营销策划wordpress删除图片
  • 个人建网站一般多少钱网络推广公司经营范围
  • 24小时自助建站制作网站的公司(深圳)
  • 德州网站建设推广做网站图
  • 中国网站建设市场分析报告营销型网站建设有哪些特点