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

前些天试着做了一个音乐播放器,很简单的一个程序,不过里面涉及到的知识需要我好好总结下。

首先我们首先说下两个Activity之间的跳转,不涉及传值。这里涉及到一个异常强大的Intent类,顾名思义,它的字面意思是“意图”,他异常重要,我们知道Android有四大核心组件 Activity、Service、Broadcast Receiver和Content Provider,略去Content Provider不提,剩下的三组组件靠的就是通过Intent所以说Intent的重要性你就可以知道的,真不是盖的!!!之前的博客中已经提到过了,可以通过它来实现打电话,发短信的功能。

实现两个Activity界面的跳转主要是用到Intent中的setclass(this,otherActivity.class)方法和Activity的startActivity()方法。

Intent intent=new Intent();intent.setClass(MainActivity.this,MyActivity.class);this.startActivity(intent);

当然这样的几行代码并不能实现从MainActivity的界面到MyActivity界面的跳转,

我们还要做的工作是要在AndroidManifest.xml中注册一个MyAcitivity以获得权限

        <activity              android:name="com.example.helloworld.MyActivity"             android:label="@string/app_name" >                    </activity>

下面是我自己写的学习步骤

 c.通过Intent实现两个手机界面的跳转方法:       Frist,创建一个新的Activity,继承super.onCreate()方法       Second,在layout文件夹下创建一个新的activaty_my.xml文件实现LinearLayout,              然后在界面添加自己想要在这个界面上出现的控件          setContentView(R.layout.activaty_my);     Third,在MainActivity中的按钮监听器中加入如下代码:         Intent intent=new Intent();  intent.setClass(MainActivity.this,MyActivity.class);this.startActivity(intent);     Fourth,要在AndroidManifest.xml中注册一个Acitivity        <activity              android:name="com.example.helloworld.MyActivity"             android:label="@string/app_name" >                        </activity>

实现从一个Activity向另一个Activity传值,在传值的时候主要用到intent的putExtra()方法,下面是该方法的截图

从上面的方法截图中那个可以看出,该方法可以传递的值的类型有很多,下面是从MainActivity的界面到PlayerActivity界面的跳转传递一个整数值和一个字符串的代码:

MainActivity中的代码Intent intent = new Intent();intent.setClass(MainActivity.this, PlayerActivity.class);//放入整数intent.putExtra("key", 5);//放入字符串intent.putExtra("str", "字符串");startActivity(intent);PlayerActivity中的代码Intent intent = this.getIntent();// 获得整数intMusicIndex = intent.getIntExtra("key", 0);//获得字符串System.out.println(intent.getStringExtra("str"));

我们还可以通过 Bundle来包装数据再使用putExtra()来进行数据的传递

MainActivity中的代码:Intent intent = new Intent();intent.setClass(MainActivity.this, PlayerActivity.class);Bundle bundle1=new Bundle();bundle1.putInt("bundle", 33); //两个参数intent.putExtra("intent", bundle1);     Bundle bundle2=new Bundle();bundle2.putString("ss", "无参");//一个参数intent.putExtras(bundle2);startActivity(intent);注意一个是putExtra,另一个是putExtrasPlayerActivity中的代码:Intent intent = this.getIntent();//获得指定的BundleBundle bundle0=intent.getBundleExtra("intent");int i=bundle0.getInt("bundle");System.out.println(i);//默认Bundle bundle=intent.getExtras();System.out.println(bundle.getString("ss"));注意一个是getBundleExtra,一个是getExtras

更多相关文章

  1. android创建sqlite数据库及在SD卡上创建数据库(二)
  2. Android相机Camera2的简单分析
  3. Android中使用apache commons-net发送后台邮件的方法
  4. android 完全区分double-tap 与 singal-tap 的方法
  5. Android(安卓)arm64(aarch64)中的so注入(inject) - 兼容x86 and
  6. Android获取其他包的Context实例然后干坏事
  7. Android音频播放
  8. Android三种菜单简介
  9. Android程序界面主题切换

随机推荐

  1. 十二、Android UI开发专题
  2. Android MVVM 解读 3. Android MVVM 介绍
  3. Android数据库使用(ORMLite)
  4. android 获取应用的当前版本号&获取当前a
  5. android camer 图片回显界面照片分享到微
  6. Android 双开沙箱 VirtualApp 源码分析(三
  7. Android之复选框对话框用法实例分析
  8. Android在代码中请求root权限
  9. 在Windows XP下Eclipse中安装Android并配
  10. android + cygwin + cocos2d-x环境搭建