• 多个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>
  • 相关阅读:
    zip
    sublime 3 注册码
    css3 文本控制自动换行
    ST3 package control
    cf1139D-Steps to One
    2019-2020 ACM-ICPC, Asia Xuzhou Regional Contest
    2018-2019 ACM-ICPC, Asia Jiaozuo Regional Contest
    Tree
    B
    多源对多源最短路
  • 原文地址:https://www.cnblogs.com/LO-ME/p/3586444.html
Copyright © 2020-2023  润新知