Android Activity – From One Screen To Another Screen从一个屏幕切换到另一屏幕,Intent



在 Android 中,一个  activity 就代表了一个屏幕。


在本教程中,将展现如何与 activity 进行交互。当点击一个按钮时,从一个当前屏幕切换到另一个屏幕。



1. XML Layouts
在“res/layout/”文件夹下创建以下两个 XML layout files  :

     

res/layout/main.xml – 代表 屏幕 1
res/layout/main2.xml – 代表 屏幕 2



File : res/layout/main.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="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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值