Android 应用软件开发(三)Activity&Intent
Intent对象包含的基本信息
1. Component name ---------------- 被启动的组件名称
2. Action ------------------------------ 启动后的Activity要做的行动
3. Data -------------------------------- 传送的数据,是一个 URI
4. Category
5. Extras ------------------------------- 是一些键值对
6. Flags
在一个Activity中启动另一个Activity,可以使用按钮点击事件来实现
1. 继承 View.OnClickListener 类并且重载onClick(View)函数,作为Activity的内部类
2. 在onClick函数中生成Intent对象,并设置对象中的数据。启动Activity的startService
3. 将上面监听器的对象捆绑在Activity的按钮上,使用Button的setOnClickListener方法
在设置Intent对象的值的时候可以使用putExtra方法设置键值对
使用setClass方法设置启动组件名称等
在接收端的Activity中使用getIntent方法得到传给它的Intent对象
调用getStringExtra方法取得键值对的值,完成数据的传递
不仅在同一个应用程序中使用一个Activity启动另一个Activity,而且还可以启动另一个应用程序的Activity
也不妨碍Intent的数据传送
代码:
Activity02.java:
package mars.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class Activity02 extends Activity {
//声明一个Button对象用于启动另一个Activity
private Button myButton = null;
//声明一个监听器类,相当于MFC中的消息函数作用
class MyButtonListener implements View.OnClickListener{
@Override
//复写onClick函数
public void onClick(View v) {
// TODO Auto-generated method stub
//生成一个Intent
Intent intent = new Intent();
//这个Intent对象是用Activity02的这个对象来启动OtherActivity
intent.setClass(Activity02.this,OtherActivity.class);
//启动
Activity02.this.startActivity(intent);
}
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//布局
setContentView(R.layout.main);
//获取Button句柄
myButton = (Button)findViewById(R.id.myButton);
myButton.setText("进入另一个Activity");
//绑定监听器
myButton.setOnClickListener(new MyButtonListener());
}
}
OtherActivity.java:
package mars.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class OtherActivity extends Activity {
private TextView myTextView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
myTextView = (TextView)findViewById(R.id.myTextView);
//获取发送到此Activity的Intent对象
Intent intent = getIntent();
String myName=intent.getStringExtra("name");
myTextView.setText(myName);
}
}
R.java:
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package mars.activity;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int ic_launcher=0x7f020000;
}
public static final class id {
public static final int myButton=0x7f050000;
public static final int myTextView=0x7f050001;
}
public static final class layout {
public static final int main=0x7f030000;
public static final int other=0x7f030001;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
public static final int other=0x7f040002;
}
}
main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/myButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
other.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/myTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
string.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, Activity02!</string>
<string name="app_name">Activity02</string>
<string name="other">Other Activity</string>
</resources>
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="mars.activity"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="4" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".Activity02" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".OtherActivity"
android:label="@string/other">
</activity>
</application>
</manifest>

浙公网安备 33010602011771号