多个Activity和Intent

Intent是Android应用程序组件之一,在Android系统当中表示一种意图,Intent中包含了一组信息:

  最重要的内容是action(动作)和data(数据)

  Component name 表示要启动哪个Activity

 

FirstActivity.java

 1 import android.os.Bundle;

 2 import android.app.Activity;

 3 import android.content.Intent;

 4 import android.view.View;

 5 import android.view.View.OnClickListener;

 6 import android.widget.Button;

 7 

 8 public class FirstActivity extends Activity {

 9     private Button firstButton;

10     @Override

11     protected void onCreate(Bundle savedInstanceState) {

12         super.onCreate(savedInstanceState);

13         setContentView(R.layout.activity_first);

14         

15         firstButton = (Button)findViewById(R.id.firstButton);

16         firstButton.setText(R.string.firstButton);

17         firstButton.setOnClickListener(new ButtonListener());

18     }

19     

20     class ButtonListener implements OnClickListener{

21 

22         @Override

23         public void onClick(View v) {

24             Intent intent = new Intent();

25             /*setClass方法:

26                     第一个参数是一个Context对像,Context是一个类,Activity是Context类的子类,也就是说,所有的Activity对象都可以向上转型为Context对象

27                     第二个参数是一个Class对象,在当前场景下,传入需要启动的Activity类的Class对象

28             */

29             intent.setClass(FirstActivity.this, SecondActivity.class);

30             FirstActivity.this.startActivity(intent);

31         }

32         

33     }

34 

35 }

 FirstActivity.xml

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

 2     xmlns:tools="http://schemas.android.com/tools"

 3     android:layout_width="match_parent"

 4     android:layout_height="match_parent"

 5     android:paddingBottom="@dimen/activity_vertical_margin"

 6     android:paddingLeft="@dimen/activity_horizontal_margin"

 7     android:paddingRight="@dimen/activity_horizontal_margin"

 8     android:paddingTop="@dimen/activity_vertical_margin"

 9     tools:context=".FirstActivity" 

10     android:orientation="vertical">

11 

12     <TextView

13         android:layout_width="wrap_content"

14         android:layout_height="wrap_content"

15         android:text="@string/first" />

16     

17     <Button

18         android:id="@+id/firstButton"

19         android:layout_width="fill_parent"

20         android:layout_height="wrap_content"/>

21 </LinearLayout>

 

SecondActivity.java

 1 import android.app.Activity;

 2 import android.content.Intent;

 3 import android.os.Bundle;

 4 import android.view.View;

 5 import android.view.View.OnClickListener;

 6 import android.widget.Button;

 7 

 8 public class SecondActivity extends Activity{

 9     private Button SecondtButton;

10     @Override

11     protected void onCreate(Bundle savedInstanceState) {

12         super.onCreate(savedInstanceState);

13         setContentView(R.layout.activity_second);

14         SecondtButton = (Button)findViewById(R.id.SecondtButton);

15         SecondtButton.setText(R.string.secondtButton);

16         SecondtButton.setOnClickListener(new ButtonListener());

17         

18     }

19     class ButtonListener implements OnClickListener{

20 

21         @Override

22         public void onClick(View v) {

23             Intent intent = new Intent();

24             intent.setClass(SecondActivity.this, ThirdActivity.class);

25             SecondActivity.this.startActivity(intent);

26             finish();//该方法使Activity跳转到下一个Activity时关掉这个Activity

27         }

28         

29     }

30 }

 SecondActivity.xml

 1 <?xml version="1.0" encoding="utf-8"?>

 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

 3     android:layout_width="match_parent"

 4     android:layout_height="match_parent"

 5     android:orientation="vertical" >

 6     

 7     

 8     <TextView

 9         android:layout_width="fill_parent"

10         android:layout_height="wrap_content"

11         android:text="@string/second"

12         ></TextView>

13     

14     

15     <Button

16         android:id="@+id/SecondtButton"

17         android:layout_width="fill_parent"

18         android:layout_height="wrap_content"

19         ></Button>

20 </LinearLayout>

 

ThirdActivity.java

 1 import android.app.Activity;

 2 import android.content.Intent;

 3 import android.net.Uri;

 4 import android.os.Bundle;

 5 import android.view.View;

 6 import android.view.View.OnClickListener;

 7 import android.widget.Button;

 8 

 9 public class ThirdActivity extends Activity{

10     private Button ThirdButton;

11     protected void onCreate(Bundle savedInstanceState) {

12         super.onCreate(savedInstanceState);

13         setContentView(R.layout.activity_third);

14         

15         ThirdButton = (Button)findViewById(R.id.ThirdActivity);

16         ThirdButton.setText(R.string.thirdtButton);

17         ThirdButton.setOnClickListener(new ButtonListener());

18     }

19     class ButtonListener implements OnClickListener{

20         public void onClick(View v) {

21             

22              Uri uri = Uri.parse("smsto://0800000123");    

23              Intent it = new Intent(Intent.ACTION_SENDTO, uri);    

24              it.putExtra("sms_body", "The SMS text");    

25              ThirdActivity.this.startActivity(it);   

26         }

27     }

28 }

 ThirdActivity.xml

 1 <?xml version="1.0" encoding="utf-8"?>

 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

 3     android:layout_width="match_parent"

 4     android:layout_height="match_parent"

 5     android:orientation="vertical" >

 6     <TextView

 7         android:layout_width="fill_parent"

 8         android:layout_height="wrap_content"

 9         android:text="@string/third"

10     />

11     

12     <Button

13         android:id="@+id/ThirdActivity"

14         android:layout_width="fill_parent"

15         android:layout_height="wrap_content"

16         />

17 

18 </LinearLayout>

AndroidManifest.xml

 1 <?xml version="1.0" encoding="utf-8"?>

 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"

 3     package="com.mars.activity06"

 4     android:versionCode="1"

 5     android:versionName="1.0" >

 6 

 7     <uses-sdk

 8         android:minSdkVersion="4"

 9         android:targetSdkVersion="18" />

10 

11     <application

12         android:allowBackup="true"

13         android:icon="@drawable/ic_launcher"

14         android:label="@string/app_name"

15         android:theme="@style/AppTheme" >

16         <activity

17             android:name="com.mars.activity06.FirstActivity"

18             android:label="@string/app_name" >

19             <intent-filter>

20                 <action android:name="android.intent.action.MAIN" />

21 

22                 <category android:name="android.intent.category.LAUNCHER" />

23             </intent-filter>

24         </activity>

25         <!--每当程序当中有个Activity的时候就需要使用<activity/>标签对该Activity进行注册       有两个属性name和lable name的值是这个Activity的包名和类名       lable可以自定义-->

26         <activity android:name="com.mars.activity06.SecondActivity" android:label="@string/second"/>

27         <activity android:name="com.mars.activity06.ThirdActivity" android:label="@string/third"/>"

28     </application>

29 

30 </manifest>

 string.xml

 1 <?xml version="1.0" encoding="utf-8"?>

 2 <resources>

 3 

 4     <string name="app_name">Activity06</string>

 5     <string name="action_settings">Settings</string>

 6     <string name="first">FirstActivity</string>

 7     <string name="firstButton">FirstButton</string>

 8     <string name="second">SecondActivity</string>

 9     <string name="secondtButton">SecondButton</string>

10     <string name="third">ThirdActivity</string>

11     <string name="thirdtButton">ThirdButton</string>

12 

13 </resources>

 

 

 

在Activity之间可以通过Intent对象传递数据

  使用putExtra()系列方法向Intent对象当中存储数据

  使用getXXXExtra()系列方法从Intent对象当中取出数据

MainActivity.java

 1 import android.app.Activity;

 2 import android.content.Intent;

 3 import android.os.Bundle;

 4 import android.view.View;

 5 import android.view.View.OnClickListener;

 6 import android.widget.Button;

 7 

 8 public class MainActivity extends Activity {

 9     //代表按钮对象的引用

10     private Button myButton;

11     @Override

12     //复写父类当中的onCreate方法,Activity第一次运行时会调用这个方法

13     protected void onCreate(Bundle savedInstanceState) {

14         super.onCreate(savedInstanceState);

15         setContentView(R.layout.main);

16         

17         myButton = (Button) findViewById(R.id.myButton);

18         myButton.setOnClickListener(new myButtonListener());

19         

20     }

21     //以下是一个内部类,这个内部类的对象是一个监听器(如果对监听器不是很熟悉,可以参考设计模式当中的观察者模式)

22     class myButtonListener implements OnClickListener{

23 

24         //生成该类的对象,并将其注册到控件上。如果该控件被用户按下,就会执行onClick方法 

25         public void onClick(View v) {

26             

27             Intent intent = new Intent();//生成一个Intent对象

28             

29             intent.putExtra("number", "13112266075");//在Intent对象当中添加一个键值对,键的取名应该加上这个Activity的包名代表着那个包下的数据,格式包名.键的名字,如果不需要传递数据,这步可以不要

30             

31             //设置Intent对象要启动的Activity,不能直接写this,因为直接写this代表的是本类的对象,也就是myButtonListener这个对象

32             /*

33              * setClass函数的第一个参数是一个Context对象

34              * Context是一个类,Activity是Context类的子类,也就是说,所有的Activity对象,都可以向上转型为Context对象

35              * */

36             intent.setClass(MainActivity.this, OtherActivity.class);

37             //通过Intent对象启动另外一个Activity

38             MainActivity.this.startActivity(intent);

39             

40             

41             

42             /*

43             //以下的4行代码将启动发送短信的Activity,

44             Uri uri = Uri.parse("smsto://0800000123");    

45             Intent intent = new Intent(Intent.ACTION_SENDTO, uri);    

46             intent.putExtra("sms_body", "The SMS text");    

47             startActivity(intent);

48          */

49         }

50     }

51 }

 main.xml

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

 2     xmlns:tools="http://schemas.android.com/tools"

 3     android:orientation="vertical"

 4     android:layout_width="match_parent"

 5     android:layout_height="match_parent"

 6     android:paddingBottom="@dimen/activity_vertical_margin"

 7     android:paddingLeft="@dimen/activity_horizontal_margin"

 8     android:paddingRight="@dimen/activity_horizontal_margin"

 9     android:paddingTop="@dimen/activity_vertical_margin"

10     tools:context=".MainActivity" >

11 

12     <!-- 下面的标签声明了一个Buttin(按钮)控件,并为这个控件设置了ID,这个ID会被注册到R.java文件当中 -->

13     <Button

14         android:id="@+id/myButton"

15         android:layout_width="fill_parent"

16         android:layout_height="wrap_content"

17         android:text="@string/Button"

18         />

19 

20 </LinearLayout>

 OtherActivity.java

 1 import android.app.Activity;

 2 import android.content.Intent;

 3 import android.os.Bundle;

 4 import android.widget.TextView;

 5 

 6 public class OtherActivity extends Activity{

 7     private TextView myTextView;

 8     protected void onCreate(Bundle savedInstanceState) {

 9         

10         super.onCreate(savedInstanceState);

11         setContentView(R.layout.other);

12         //取得从上一个Activity当中传递过来的Intent对象

13         Intent intent = getIntent();

14         //从Intent当中根据key取得value

15         String number = intent.getStringExtra("number");//该方法还有第二个参数,是一个值,表示如果上一个Activity中的键没有值,就将这个方法中的第二个参数赋值number这个变量

16         

17         myTextView = (TextView) findViewById(R.id.myTextView);

18         myTextView.setText(number);

19         

20     }

21     

22 }

 other.xml

 1 <?xml version="1.0" encoding="utf-8"?>

 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

 3     android:layout_width="match_parent"

 4     android:layout_height="match_parent"

 5     android:orientation="vertical" >

 6     

 7     

 8     <TextView

 9         android:id="@+id/myTextView"

10         android:layout_width="fill_parent"

11         android:layout_height="wrap_content"

12         android:text="@string/TextView"

13         />"

14 

15 </LinearLayout>

 AndriodManifest.xml

 1 <?xml version="1.0" encoding="utf-8"?>

 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"

 3     package="com.mars.conver_activity"

 4     android:versionCode="1"

 5     android:versionName="1.0" >

 6 

 7     <uses-sdk

 8         android:minSdkVersion="8"

 9         android:targetSdkVersion="18" />

10 

11     <application

12         android:allowBackup="true"

13         android:icon="@drawable/ic_launcher"

14         android:label="@string/app_name"

15         android:theme="@style/AppTheme" >

16         <activity

17             android:name="com.mars.conver_activity.MainActivity"

18             android:label="@string/app_name" >

19             <intent-filter>

20                 <action android:name="android.intent.action.MAIN" />

21 

22                 <category android:name="android.intent.category.LAUNCHER" />

23             </intent-filter>

24         </activity>

25         <activity android:name="com.mars.conver_activity.OtherActivity" android:label="@string/OtherActivity"/>"

26     </application>

27 

28 </manifest>

 string.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>



    <string name="app_name">Activity转换</string>

    <string name="action_settings">Settings</string>

    <string name="Button">start next Button</string>

    <string name="TextView">I am coming</string>

    <string name="OtherActivity">OtherActivity</string>

    



</resources>

 

 

 

MainActivity.java

 1 import android.app.Activity;

 2 import android.content.Intent;

 3 import android.os.Bundle;

 4 import android.view.View;

 5 import android.view.View.OnClickListener;

 6 import android.widget.Button;

 7 

 8 public class MainActivity extends Activity {

 9     private Button button;

10     protected void onCreate(Bundle savedInstanceState) {

11         super.onCreate(savedInstanceState);

12         setContentView(R.layout.activity_main);

13         

14         button = (Button) findViewById(R.id.button);

15         button.setOnClickListener(new ButtonListener());

16     }

17     class ButtonListener implements OnClickListener{

18         public void onClick(View v) {

19             Intent intent = new Intent();

20             intent.putExtra("com.mars.second_intent.Age", 20);

21             intent.putExtra("com.mars.second_intent.Number", "13112266075");

22             intent.setClass(MainActivity.this, OtherActivity.class);

23             MainActivity.this.startActivity(intent);

24         }

25     } 

26 }

 

activity_main.xml

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

 2     xmlns:tools="http://schemas.android.com/tools"

 3     android:layout_width="match_parent"

 4     android:layout_height="match_parent"

 5     android:paddingBottom="@dimen/activity_vertical_margin"

 6     android:paddingLeft="@dimen/activity_horizontal_margin"

 7     android:paddingRight="@dimen/activity_horizontal_margin"

 8     android:paddingTop="@dimen/activity_vertical_margin"

 9     tools:context=".MainActivity" >

10 

11     <TextView

12         android:id="@+id/textview1"

13         android:layout_width="wrap_content"

14         android:layout_height="wrap_content"

15         android:text="@string/hello_world" />

16     

17     <Button 

18         android:id="@+id/button"

19         android:layout_width="wrap_content"

20         android:layout_height="wrap_content"

21         android:layout_below="@id/textview1"

22         android:text="启动第二个Activity"

23         />

24 

25 </RelativeLayout>

OtherActivity.java

 1 import android.app.Activity;

 2 import android.content.Intent;

 3 import android.os.Bundle;

 4 import android.widget.TextView;

 5 

 6 public class OtherActivity extends Activity{

 7     private TextView textview;

 8     protected void onCreate(Bundle savedInstanceState) {

 9         super.onCreate(savedInstanceState);

10         setContentView(R.layout.other);

11         Intent intent = getIntent();

12         String str = intent.getStringExtra("com.mars.second_intent.Number");

13         int age = intent.getIntExtra("com.mars.second_intent.Age", 10);

14         

15         textview = (TextView) findViewById(R.id.textview);

16         textview.setText("Number="+str+"age="+age);

17     }

18 }

 

other.xml

 1 <?xml version="1.0" encoding="utf-8"?>

 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

 3     android:layout_width="match_parent"

 4     android:layout_height="match_parent"

 5     android:orientation="vertical" >

 6     

 7     

 8     <TextView 

 9         android:id="@+id/textview"

10         android:layout_width="wrap_content"

11         android:layout_height="wrap_content"

12         android:text="zhognguo"

13         />

14 

15 </LinearLayout>

 

 AndriodManifest.xml

 1 <?xml version="1.0" encoding="utf-8"?>

 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"

 3     package="com.mars.second_intent"

 4     android:versionCode="1"

 5     android:versionName="1.0" >

 6 

 7     <uses-sdk

 8         android:minSdkVersion="17"

 9         android:targetSdkVersion="18" />

10 

11     <application

12         android:allowBackup="true"

13         android:icon="@drawable/ic_launcher"

14         android:label="@string/app_name"

15         android:theme="@style/AppTheme" >

16         <activity

17             android:name="com.mars.second_intent.MainActivity"

18             android:label="@string/app_name" >

19             <intent-filter>

20                 <action android:name="android.intent.action.MAIN" />

21 

22                 <category android:name="android.intent.category.LAUNCHER" />

23             </intent-filter>

24         </activity>

25         

26         <activity 

27             android:name="com.mars.second_intent.OtherActivity"

28             android:label="第二个Activity"

29             ></activity>

30     </application>

31 

32 </manifest>

 

string.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>



    <string name="app_name">Second_Intent</string>

    <string name="action_settings">Settings</string>

    <string name="hello_world">Hello world!</string>



</resources>

 

 

你可能感兴趣的:(Activity)