Android学习笔记(六)通过Intent启动其他Activity
来源:互联网 发布:男士清爽乳液推荐 知乎 编辑:程序博客网 时间:2024/06/05 15:34
在一个Android应用中,一般都不只一个Activity对象,那么怎么去通过一个Activity启动另外一个Activity呢,或者将当前Activity的数据传到另外的Activity中,或者从其他Activity中获取值,或者启动Android系统中的其他应用呢?这里就要用到Intent对象,intent我们称之为“意图”它携带了我们执行的动作或信息,其实就是相当于网络中的packet数据包(暂且这样理解),就是用来传递命令和数据的,它在两个Activtiy中起到桥梁作用。
这里通过启动另外一个Activity ,并将当前Activity 的数据传送到另外一个Activity 上。
在helloWorld中我们编写了一个文本输入框和send按钮的Activity,这里我们再编写一个Activity,java文件为DisplayMessageActivity.java ,来显示前一个Activity发送的内容。
a、为按钮添加事件响应
为了将Activity A上的数据能传送,我们得先响应按钮事件,
在activity_main.xml布局文件中button元素添加上
android:onClick属性,修改后如下:
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" android:onClick="sendMessage" />
android:onClick属性值为sendMessage,"sendMessage"为MainActivity.java类中的一个方法,用来响应Button的点击事件。
在MainActivity.java文件中加上方法sendMessage,如下:
/** 该方法将在用户点击了send Button时调用*/public void sendMessage(View view) { // Do something in response to button}
为了响应onClick,该方法必须满足下列条件:
方法必须为public的;
返回值必须为空(void)
有且仅有一个View类型的参数(该参数即为当前OnClick事件的源source)
b、构建意图(Intent)
这里我们在上面的sendMessage方法中添加一个意图(Intent),来启动封装我们要发送的数据;如下:
//DisplayMessageActivity.class 这里表示要启动该ActivityIntent intent = new Intent(this, DisplayMessageActivity.class);//通过findViewById方法来从布局文件中找到对应的viwe对象EditText editText = (EditText) findViewById(R.id.edit_text);String message = editText.getText().toString();//获取eidtText的数据intent.putExtra(EXTRA_MESSAGE, message);//设置到intent对象上startActivity(intent);//调用startActivity方法执行intent来启动DisplayMessageActivityEXTRA_MESSAGE 为我们为当前消息设置的一个key值,该值用来唯一标识当前消息,其他Activity就可以通过这个标识key来获取消息内容。
这里我们在当前Activity中定义为:
public final static String EXTRA_MESSAGE = "com.example.helloword.MESSAGE";
在前面加上包前缀,主要是用于唯一标示该key。
c、创建第二个Activity即DisplayMessageActivity
在工具栏中选择new 按钮,在弹出的对话框中选择Android ->Android Activity,如图:
点击next,如图:
工程名处Project我们选择HelloWord
Activity Name处输入:DisplayMessageActivity
Layout Name输入activity_diskplay_message
Title 即为Activity显示时的标题栏类容,这里默认的是显示DisplayMessageActivity.
点击Finish,成功创建好了DisplayMessageActivity.java文件和对应的布局文件。
打开DisplayMessageActivity.java文件,此时我们看到系统自动把对应的layout设置上了,onCreate初始代码为:
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);setContentView(R.layout.activity_display_message);}
d、解析并呈现Intent内容
在onCreate中,通过方法getIntent来获取并解析出从ActivityMain 中传来的数据。
Intent intent = getIntent();String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
数据获取到后,我们通过一个TextView将其显示出来;
修改后的onCreate方法如下:
@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 从intent中获取数据 Intent intent = getIntent(); String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); TextView textView = new TextView(this); textView.setTextSize(40); textView.setText(message); //设置textView为当前的contentView setContentView(textView);}
e、在AndroidManifest.xml中声明新加的Activity,即DisplayMessageActivity
前面说了,任何要需要再系统中呈现的Activity都必须在AndroidManifest.xml中通过activity元素进行声明。
打开AndroidManifest.xml文件,我们看到DisplayActivity系统已经为我们声明了,如果系统没有自动添加,则需要我们手动加上:
<activity android:name="com.example.helloword.DisplayMessageActivity" android:label="@string/title_activity_display_message" > </activity>
f、运行程序
现在就可以运行我们的程序了。运行后,在文本输入框中输入Hello world 点击send按钮,则会跳转到另外一个Activity去,并显示出了Hello world,如图:
0 0
- Android学习笔记(六)通过Intent启动其他Activity
- 通过Intent启动其他APP的Activity
- Android - 通过Intent启动Activity
- Android: 通过 intent 启动 Activity
- Android学习笔记-Activity&Intent
- 通过Activity启动其他Activity
- android里 通过Intent来启动其他非系统应用程序
- android学习笔记(六) intent
- android 通过点击上下文菜单采用intent启动activity
- android 通过点击上下文菜单采用intent启动activity
- android 通过点击上下文菜单采用intent启动activity
- Android Activity和Intent机制学习笔记
- [Android学习笔记] -- Activity和Intent
- Android Activity和Intent机制学习笔记
- Android Activity和Intent机制学习笔记
- Android Activity和Intent机制学习笔记
- Android Activity和Intent机制学习笔记
- Android Activity和Intent机制学习笔记
- 使用Apache的ab工具进行压力测试
- Eclipse 启动报错Failed to create the Java Virtual Machine的解决方法,!!!三种
- 学习IOS开发的第4天
- test
- hdu 2036 计算多边形面积(备战LQB)
- Android学习笔记(六)通过Intent启动其他Activity
- 【poj2505】A multiplication game
- poj2488
- 控制ScrollView的自动滚动速度
- Geoserver的样式一(点的样式之文本编辑)
- 【poj2484】A Funny Game
- 【poj2234】Matches Game
- 【poj2975】Nim
- Geoserver样式(二)---实现了线样式