(二)——使用Intent传数据之通用方式
最后更新于:2022-04-01 20:16:23
1、Intent(意图):Intent是一种运行时绑定机制(runtime binding),用于在两个Activity之间传递数据。Intent也具有媒体中介的作用,实现调用者与被调用者之间的解耦;
2、Intent传递数据通用方式:(1)在Main.java中构造一个Intent;(2)然后调用startActivity(intent)将构造的Intent传入;(3)系统根据Intent中的描述,到Manifest.xml寻找满足此要求的Activity(4)系统会调用这个Activity,传入Intent,执行相应的操作~
3、新建Android项目”android_intent“,创建Activity名为”Main“;
4、在“res/layout/main.xml”中添加一个”Button“,完成布局文件的编写,代码如下:
~~~
~~~
5、新建“OtherActivity.java”,并在“Superclass”中选择“android.app.Activity”(继承Activity),并在其中添加onCreate()方法(代码在步骤9);
6、接着声明一个布局文件,在“res/layout”中新建“other.xml”,将其代码修改如下:
~~~
~~~
7、打开“src”中的“Main.java”,在Main类中添加代码以构造Intent并启动Intent,添加后代码如下:
~~~
public class Main extends Activity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);// 加载布局文件
button = (Button) this.findViewById(R.id.button);//根据Id查找视图
button.setOnClickListener(new View.OnClickListener() {//点击,启动点击事件,在其中新建意图
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//由Main.this传入OtherActivity.class,表示从当前意图传入目标意图。
Intent intent = new Intent(Main.this, OtherActivity.class);
// 在意图中传递数据,将数据临时存储在内存中
intent.putExtra("name", "张三");
intent.putExtra("age", 23);
intent.putExtra("address", "北京");
// 启动意图
startActivity(intent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
~~~
8、打开“AndroidManifest.xml”,在“Application”标签下添加一个“Activity”标签(以使系统在传入Intent后能查找到名为“OtherActivity”的活动),代码如下:
~~~
//用“.”表示当前这个类
~~~
9、在“OtherActivity.java”中添加一个“getIntent”方法,获取意图,随后调用get方法获取数据,再将获取的信息放入“TextView”中。完整代码如下:
~~~
public class OtherActivity extends Activity {
private TextView textview;
public OtherActivity() {
// TODO Auto-generated constructor stub
}
@Override
protected void onCreate(Bundle savedInstanceState) {//创建Activity
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.other);// 加载布局文件(必须!)
textview = (TextView) this.findViewById(R.id.msg);
//使用getIntent方法获取意图
Intent intent = getIntent();
//使用get方法取出Intent中的数据
int age = intent.getIntExtra("age", 0);
String name = intent.getStringExtra("name");
String address = intent.getStringExtra("address");
textview.setText("age--->>" + age + "\n" + "name--->>" + name + "\n"
+ "address--->>" + address + "\n");
}
}
~~~
10、右击“src”下的包,选择“Run as”中的“Android Application”来运行程序,结果截图如下:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-08-23_57bc06b032dd4.jpg)
点击“Button”显示:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-08-23_57bc06b065d99.jpg)
Ps:第一个Android程序,见笑~
';