Android Intent实现页面跳转和传值
来源:互联网 发布:淘宝美工首页一般多久 编辑:程序博客网 时间:2024/06/05 10:17
*Intent称为意图,是Android各大组件连接的桥梁
1.Activity页面跳转
同一个包内
Intent intent = new Intent();intent.setClass(MainActivity.this, SecondActivity.class); MainActivity.this.startActivity(intent);
不同包内
(1)明确的Intent
Intent intent = new Intent();ComponentName comp = new ComponentName("包名(应用本身所在的包,通过AndroidManifest.xml中package属性查看)","包名.类名(Activity所在的包)");//或者intent.setClassName("包名","包名.类名");intent.setComponent(comp);startActivity(intent);
(2)不明确的Intent
Intent intent = new Intent();intent.setAction(Intent.ACTION_MAIN); // 应用程序的入口intent.addCategory(Intent.CATEGORY_HOME); // 桌面的应用程序startActivity(intent);
然后在AndroidManifest.xml中注册该过滤条件
<activity android:name=".OtherActivity" android:label="OtherActivity" > <intent-filter> <action android:name="action_name" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter></activity>
注:
*第一个Activity是外部通过不明确的Intent跳转的
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /></intent-filter>
2.Activity页面跳转传值
第一种方法:(Intent)
发送方:
Intent intent = new Intent();intent.putExtra("name", "诸葛亮");intent.putExtra("age", 50);intent.putExtra("IQ", 200.0f);intent.setClass(MainActivity.this, SecondActivity.class);MainActivity.this.startActivity(intent);
接受方:
Intent intent = getIntent();String name = intent.getStringExtra("name");int age = intent.getIntExtra("age", 0);float IQ = intent.getFloatExtra("IQ", 0.0f);textview2.setText("name:"+name+",age:"+age+",IQ:"+IQ);
第二种方法:(Bundle)
发送方:
Intent intent = new Intent();Bundle bundle = new Bundle();bundle.putString("name", "乔峰");bundle.putInt("age", 40);bundle.putFloat("weight", 70.4f);intent.putExtras(bundle);intent.setClass(MainActivity.this, SecondActivity.class);startActivity(intent);
接受方:
Intent intent = getIntent();Bundle bundle = intent.getExtras();String name = bundle.getString("name");int age = bundle.getInt("age");float weight = bundle.getFloat("weight");textview.setText(name+","+age+","+weight);
第三种方法:(Application)
首先要新建一个继承Application的MyApp类,补充属性的get/set方法
AndroidManifest.xml也要配置application的属性android:name=".MyApp"
发送方:
MyApp myApp = (MyApp) getApplication();myApp.setName("周星驰");Intent intent = new Intent();intent.setClass(MainActivity.this, SecondActivity.class);startActivity(intent);
接受方:
MyApp myApp = (MyApp) getApplication();String name = myApp.getName();textview = (TextView) findViewById(R.id.textview);textview.setText(name);
第四种方法:(推荐)
对象类要实现Parclelable接口
发送方:
Intent intent = new Intent();Person person = new Person("孙悟空",500,55.6f);intent.putExtra("person", person);intent.setClass(MainActivity.this, SecondActivity.class);startActivity(intent);
接受方:
Intent intent = getIntent();Person person = intent.getParcelableExtra("person");textview = (TextView) findViewById(R.id.textview);textview.setText(person.toString());
对象类:
public class Person implements Parcelable { private String name; private int age; private float weight; public Person() { super(); // TODO Auto-generated constructor stub } public Person(String name, int age, float weight) { super(); this.name = name; this.age = age; this.weight = weight; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public float getWeight() { return weight; } public void setWeight(float weight) { this.weight = weight; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", weight=" + weight + "]"; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeInt(age); dest.writeFloat(weight); } public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() { public Person createFromParcel(Parcel in) { return new Person(in); } public Person[] newArray(int size) { return new Person[size]; } }; private Person(Parcel in) { name = in.readString(); age = in.readInt(); weight = in.readFloat(); }}
3.页面返回传值
被返回方:
startActivityForResult(intent, 38);
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { Bundle bundle = data.getExtras(); String name = bundle.getString("name"); int age = bundle.getInt("age"); float weight = bundle.getFloat("weight"); Toast.makeText(MainActivity.this, name+age+weight, Toast.LENGTH_LONG).show(); super.onActivityResult(requestCode, resultCode, data); }
返回方:
Intent data = new Intent();data.setClass(SecondActivity.this, MainActivity.class);Bundle bundle = new Bundle();bundle.putString("name", "张无忌");bundle.putInt("age", 20);bundle.putFloat("weight", 120.5f);data.putExtras(bundle);setResult(250, data);finish();
启动Activity
上下文中,通过如下方法启动Activity
*startActivity(Intent intent):启动新的Activity
*startActivityForResult(Intent intent, int requestCode):指定请求码启动新的Activity
如果使用startActivityForResult()启动Activity,则必须重写onActivityResult()方法,并且该方法第一个参数与requestCode相对应
关闭Activity
上下文中,通过如下方法关闭Activity
*finish():关闭当前Activity
*finishActivity(int requestCode):关闭以startActivity启动的Activity
在调用finish()关闭当前Activity前,可以调用setResult(int resultCode)设置返回码。返回码在启动的Activity中通过onActivityResult()捕获
- Android Intent实现页面跳转和传值
- Intent实现页面跳转和传值
- Intent实现页面跳转和传值
- android intent的跳转,页面传值
- Android学习之Intent实现页面跳转
- Android使用Intent实现页面跳转
- Android学习-Intent实现页面的跳转
- Intent实现页面的跳转和返回
- Intent实现页面跳转
- Intent实现页面跳转
- Intent实现页面跳转
- Intent实现页面跳转
- Android intent页面跳转
- 使用Intent实现页面跳转
- 使用Intent实现页面跳转
- 使用Intent实现页面跳转
- 使用Intent实现页面跳转
- Intent实现页面的跳转
- sublime text 3 快捷键大全以及配置编译环境
- 全双工、半双工与单工传输
- SDR相关软件的下载
- myeclipse激活
- Winform中CheckedListBox控件的使用
- Android Intent实现页面跳转和传值
- 阿里云运行代码报错整理
- python高效编程技巧5(如何快速找到多个字典中的公共键)
- 设计模式——行为型设计模之借助观察者模式实现模块之间的解耦
- TS+M3U8+directshow流媒体播放器 简介
- OSPF笔记-10
- HDU 5983 Pocket Cube 模拟
- ThinkPHP5验证码刷新功能的实现
- [PAT]1019. General Palindromic Number (20)@Java