Android 您所在的位置:网站首页 android界面跳转后数值传递 Android

Android

2024-03-23 03:43| 来源: 网络整理| 查看: 265

最近重新温故下Android基础,就一点点从基础再看一遍,参考的基础书籍是《第一行代码》,所以代码一点程度都跟书籍上面一样,这些代码不是我博客的重点,博客的重点是使用这些东西需要注意的地方,所有内容均是为了记录本人学习,如有侵权,请联系本人,谢谢!

1、Intent的显示跳转: MainActivity跳转到MainActivity1:

//显示Intent Intent intent=new Intent(MainActivity.this,MainActivity1.class); intent.putExtra("data", "Hello MainActivity1"); //一般只需要跳转页面(可传值)采用 startActivity(intent); //如果在MainActivity1中返回MainActivity页面需要传值(回调),则需要采用这个跳转,这样才能在最开始的页面的onActivityResult监听 startActivityForResult(intent,1);

2、Intent的隐式跳转:

btn2 = (Button) findViewById(R.id.btn_2); btn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //隐式Intent //这里的值"com.wzq.demo_practice_1.ACTION_START"是你在manifest注册Activity里面的值,请看下面的代码 // Intent intent=new Intent("com.wzq.demo_practice_1.ACTION_START"); // startActivity(intent); //隐式跳转浏览器 // Intent intent = new Intent(Intent.ACTION_VIEW); // intent.setData(Uri.parse("http://www.baidu.com")); // startActivity(intent); //隐式跳转拨号界面 Intent intent = new Intent(Intent.ACTION_DIAL); intent.setData(Uri.parse("tel:10086")); startActivity(intent); } });

隐式跳转的Manifest里面配置的

3、页面间的传值: 传值:

Intent intent=new Intent(MainActivity.this,MainActivity1.class); intent.putExtra("data", "Hello MainActivity1"); //一般只需要跳转页面(可传值)采用 startActivity(intent);

接收: 一般在onCreate方法里面接收值,方便在页面创建的时候需要通过数据进行逻辑处理等

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intent=getIntent(); String value=intent.getStringExtra("data"); }

4、页面返回回调: 这里需要注意 1、就是调往该页面的方式必须是 startActivityForResult(intent,1); 2、两个页面的manifest配置的启动模式必须在同一个栈,且必须是“standard” --默认模式和“singleTop”–栈顶模式 这两种启动模式才能回调成功

android:launchMode="singleTop"

3、就是startActivityForResult()方法中的请求码必须大于等于0;

附上代码: MainActivity1->MainActivity MainActivity的onActivityResult方法:

@Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode){ case 1: Log.d("111111", "1111111111111111111111"); if(resultCode==RESULT_OK){ String tig= data.getStringExtra("data_return"); Log.d("111111", tig); } break; }

MainActivity1的代码:

btn1 = (Button) findViewById(R.id.btn_1); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.putExtra("data_return", "Hello FirstActivity"); setResult(RESULT_OK, intent); finish(); } });

如果是需要在点击返回键的时候触发回调,可以重写这个方法:

@Override public void onBackPressed() { Intent intent = new Intent(); intent.putExtra("data_return", "Hello FirstActivity"); setResult(RESULT_OK, intent); finish(); }

如果是在setResult在onPuase/onStop等地方设置,解决方案是

//重写onBackPressed public void onBackPressed(){ Intent intent = new Intent(); intent.putExtra("data_return", "Hello FirstActivity"); setResult(RESULT_OK, intent); super.onBackPressed(); }

嗯,本篇博客就到这里了 ,如果帮助到你就给我点个赞吧!谢谢大xiong dei



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有