在 Android 中,一个 activity 就代表了一个屏幕。
在本教程中,将展现如何与 activity 进行交互。当点击一个按钮时,从一个当前屏幕切换到另一个屏幕。
1. XML Layouts
在“res/layout/”文件夹下创建以下两个 XML layout files :
res/layout/main.xml – 代表 屏幕 1
res/layout/main2.xml – 代表 屏幕 2
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="I'm screen 1 (main.xml)"
android:textAppearance="?android:attr/textAppearanceLarge"/>
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Click me to another screen"/>
</LinearLayout>
File : res/layout/main2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="I'm screen 2 (main2.xml)"
android:textAppearance="?android:attr/textAppearanceLarge"/>
</LinearLayout>
2. Activities
创建两个activity 类:
AppActivity.java –> main.xml
App2Activity.java –> main2.xml
要从一个屏幕切换到另一个屏幕,需要使用以下关键代码:
Intent intent = new Intent(context, anotherActivity.class);
startActivity(intent);
File : AppActivity.java
package com.jiangge.activitydemo;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;
public class AppActivity extends Activity {
Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
addListenerOnButton();
}
public void addListenerOnButton() {
final Context context = this;
button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(context, App2Activity.class);
startActivity(intent);
}
});
}
}
File : App2Activity.java
package com.jiangge.activitydemo;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
public class App2Activity extends Activity {
Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
}
}
3. AndroidManifest.xml
Declares above two activity classes in AndroidManifest.xml.
File : AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.jiangge.activitydemo"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.jiangge.activitydemo.AppActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.jiangge.activitydemo.App2Activity"
android:label="@string/app_name">
</activity>
</application>
</manifest>
注意name的值: android:name="com.jiangge.activitydemo.AppActivity"
android:name="com.jiangge.activitydemo.App2Activity"
4. Demo
Run application.
AppActivity.java (main.xml) screen is display.
When above button is clicked, it will navigate to another screen App2Activity.java (main2.xml).
参考文献:
http://www.mkyong.com/android/android-activity-from-one-screen-to-another-screen/
has stopped unexpectedly please try again
=================================================================================
Note:
知识点:
1、每一个Activity都需要在AndroidManifest.xml文件当中进行配置(注册)
<activity
android:name="com.jiangge.intentdemo.Activity02"
android:label="@string/app_name" >
</activity>
2、Intent( 意图)的作用
一个 intent 对象包含了一组信息:
1)、componet name
2)、action
3)、data
4)、category
5)、extras : 附加(extras)字段,key value 键值对。
6)、 flags
核心代码片断:
Intent intent = new Intent();
intent.setClass(Activity01.this, Activity02.class);
startActivity(intent);
Intent intent = new Intent(Activity01.this, Activity02.class);
startActivity(intent);
3、使用 Intent 在 Activity 之间传递数据:intent.putExtra("key", "value"); 键值对
在 Activity01 中设置将要发送给 Activity02 的数据:
Intent intent = new Intent(Activity01.this, Activity02.class);
//intent.setClass(Activity01.this, Activity02.class);
intent.putExtra("firstActivityKey", "hey 2,我是第一个Activity");//参数为key, value. 键值对
startActivity(intent);
在 Activity02中接收 Activity01 传来的话数据:String value= intent.getStringExtra("key");
public class Activity02 extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity02);
TextView textview = (TextView) findViewById(R.id.mytv02);
Intent intent = getIntent();//Return the intent that started this activity.
String value = intent.getStringExtra("firstActivityKey");//通过intent中的key,获得value
textview.setText(value);
}
}
注意:textview.setText( 100); //setText的
参数必须为字符串类型,否则会报错
4、使用Intent 者发送短信息:
Uri uri = Uri.parse("smsto:15666666666");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "This is the sms content");
startActivity(intent);
效果图:
“偷懒”简化后代码:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("sms:"+ phoneNumber)));
phoneNumber收信人的电话号码
具体信息,官方文档。
也可看此篇文章:http://www.cnblogs.com/skynet/archive/2010/07/20/1781644.html