Android入门学习笔记(五):Activity与Intent
2011-08-10 16:44
609 查看
Android入门学习笔记(五):Activity与Intent
.多个Activity之间的关系
一个程序一般都是含有多个Activity,如一个应用程序中含有两个Activity:当我们需要从Activity01跳转到Activity02时,就需要调用Activity01的startActivity方法,并传入一个Intent对象,并由这个Intent对象决定跳转的是哪一个Activity、并传入相应信息
.Intent的基本作用
Intent在Android帮助文档里的介绍如下:An
Intentobject is a bundle of information. It contains information of interest to the component that receives the intent (such
as the action to be taken and the data to act on) plus information of interest to the Android system (such as the category of component that should handle the intent and instructions on how to launch a target activity). Principally, it can contain the following:
一个Intent对象包含了一组信息:
1. Component name
2. Action
3. Data
4. Category
5. Extras
6. Flags
Component name: 组件名字,决定跳转时启动哪一Activity(也可以启动Service等其他组件)
Action: 跳转到另一个Activity所做的动作
在官方API中指定了如下Action常量
如,指定Action为ACTION_CALL时,则初始化一个电话
Data:传送的数据:URI 。 The URI of the data to be acted on and the MIME type of that data
Extras:额外的资源:键值对
Category和Flags暂不介绍
.在一个Activity中启动另外一个Activity并传递相应数据
一个应用程序如下OneActivity
package zhang.activity; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class OneActivity extends Activity { /** Called when the activity is first created. */ private Button myButton = null; private TextView myTextView = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); myButton = (Button)findViewById(R.id.myButton); myTextView = (TextView)findViewById(R.id.myTextView); myButton.setOnClickListener(new MyButtonListener()); } class MyButtonListener implements OnClickListener{ public void onClick(View v) { Intent intent = new Intent(); intent.putExtra("hello",OneActivity.this.myTextView.getText()); intent.setClass(OneActivity.this, OtherActivity.class); OneActivity.this.startActivity(intent); } } }OtherActivity
package zhang.activity; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; public class OtherActivity extends Activity { TextView myTextView = null; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.other); Intent intent = getIntent(); String value = "Received:" + intent.getStringExtra("hello"); myTextView = (TextView)findViewById(R.id.myTextView); myTextView.setText(value); } }OneActivity的布局文件main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/myTextView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:id="@+id/myButton" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
OtherActivity的布局文件other.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/myTextView" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
在OneActivity中通过findViewByID获得对应的TextView控件和Button控件,并为Button控件注册OnClickListener监听器
在OnClickListener中复写onClick方法:
public void onClick(View v) { Intent intent = new Intent(); intent.putExtra("hello",OneActivity.this.myTextView.getText()); intent.setClass(OneActivity.this, OtherActivity.class); OneActivity.this.startActivity(intent); }在其中定义了一个Intent对象,intent.putExtra传出了一个键值对:hello--OneActivity.this.myTextView.getText()
intent.setClass设置了跳转方式为:从该Activity跳转到OtherActivity
在OtherActivity中
Intent intent = getIntent(); String value = "Received:" + intent.getStringExtra("hello"); myTextView = (TextView)findViewById(R.id.myTextView); myTextView.setText(value);通过getIntent()方法获得了一个Intent方法,并定义了字符串对象value为 "Received: " + intent.getStringExtra("hello");
即Received加上通过Intent传入的键值对"hello"的值
所以我们看到的程序一开始界面为
点击Button按钮后会跳转到下面Activity,并能看到TextView的文字被设置为了Received:Hello Worl,activity02!
. 非同一个应用程序中的Activity也可以的跳转
如将上面的复写OneActivity中的OnClick(View v)方法的内容改为如下public void onClick(View v) { /*Intent intent = new Intent(); intent.putExtra("hello",OneActivity.this.myTextView.getText()); intent.setClass(OneActivity.this, OtherActivity.class); OneActivity.this.startActivity(intent); */ Uri uri = Uri.parse("smsto:10010"); Intent intent = new Intent(Intent.ACTION_SENDTO,uri); intent.putExtra("sms_body", "This is the sms text"); startActivity(intent); }
则点击Button按钮后,打开的将会是发短信页面 ,如下:
这是因为构造Intent时
Intent intent = new Intent(Intent.ACTION_SENDTO,uri);
指明了该Intent的动作是 ACTION_SENDTO 即发短信动作
数据 uri为 Uri uri = Uri.parse("smsto:10010");
intent.putExtra("sms_body", "This is the sms text");
并设置了短信内容为 "This is the sms text"
所以点击Button调用startActivity(intent)方法后看到的会是上面的发短信界面
.心得
到现在才算真正开始入门Android,以后笔记不会记得像以前那么太详细,把重点难点记住就可以,也不用花太多时间发现自己英语水平真的很差,Android的帮助文档内容很多看不懂的
相关文章推荐
- Android入门学习笔记(三)|Activity和Intent
- Android入门学习笔记,主要是activity和intent,以及eclipse常用快捷方式
- 【转】Android Activity和Intent机制学习笔记----不错
- Android Activity和Intent机制学习笔记
- Android Activity和Intent机制学习笔记
- Android Activity和Intent机制学习笔记
- Android Activity和Intent机制学习笔记
- Android Activity和Intent机制学习笔记
- Android(OPhone) 学习笔记 - Intent和Activity(2)
- Android Activity和Intent机制学习笔记
- Android Activity和Intent机制学习笔记
- [转]Android Activity和Intent机制学习笔记
- Android Activity和Intent机制学习笔记
- android开发学习笔记(9)Intent之在两个Activity之间切换
- Android Activity和Intent机制学习笔记
- Android Activity和Intent机制学习笔记
- Android开发笔记----Activity再学习(生命周期、启动模式、intent-filter)
- Android Activity和Intent机制学习笔记
- Android Activity和Intent机制学习笔记
- Android Activity和Intent机制学习笔记