• Android开发学习之Activity的简介


    1.Activity的概念介绍

         Activity是Android组件中最基本也是最常用的一种组件,在一个Android应用中,一个Activity通常就是一个单独的屏幕。每一个Activity都被实现为一个独立的类,并且继承于Activity这个基类。

    activity类处于android.app包中,继承体系如下:

    1.java.lang.Object

    2.android.content.Context

    3.android.app.ApplicationContext

    4.android.app.Activity

    2.Activity的创建

        Activity提供了和用户交互的可视化界面。创建一个Activity一般是继承Activity(也可以是LisActivity,MapActivity等),覆盖Activity的onCreate( )方法,在该方法中调用setContentView( )方法来展示要显示的视图,调用findViewById( )方法实例化组件。注意Activity只有在清单文件中声明才能使用。

    3.Activity的应用实例

    3.1两个Activity之间的切换

    要做到两个Activity之间的切换(也就是从一个Activity启动另一个Activity),可以使用startActivity( )方法或者startActivityForResult( ) (能够返回结果)。这两个方法要传递的参数是组件Intent。

    下面的实例是MainActivity和SecondActivity之间的切换:

    main.xml

    1. <?xml version="1.0" encoding="utf-8"?> 
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    3.     android:orientation="vertical" 
    4.     android:layout_width="fill_parent" 
    5.     android:layout_height="fill_parent" 
    6.     > 
    7.     <TextView    
    8.         android:layout_width="fill_parent"   
    9.         android:layout_height="wrap_content"   
    10.         android:text="@string/hello1" 
    11.         /> 
    12.     <Button   
    13.         android:id="@+id/btn" 
    14.         android:layout_width="wrap_content"   
    15.         android:layout_height="wrap_content"   
    16.         android:text="转到SecondActivity" 
    17.         /> 
    18. </LinearLayout> 

    second.xml

    1. <?xml version="1.0" encoding="utf-8"?> 
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    3.     android:orientation="vertical" 
    4.     android:layout_width="fill_parent" 
    5.     android:layout_height="fill_parent" 
    6.     > 
    7.     <TextView    
    8.         android:layout_width="fill_parent"   
    9.         android:layout_height="wrap_content"   
    10.         android:text="@string/hello2" 
    11.         /> 
    12.     <Button   
    13.         android:id="@+id/secondBtn" 
    14.         android:layout_width="wrap_content"   
    15.         android:layout_height="wrap_content"   
    16.         android:text="返回" 
    17.         /> 
    18. </LinearLayout> 

    MainActivity.java

    1. package com.android.test.activity;  
    2.  
    3. import android.app.Activity;  
    4. import android.content.Intent;  
    5. import android.os.Bundle;  
    6. import android.view.View;  
    7. import android.view.View.OnClickListener;  
    8. import android.widget.Button;  
    9.  
    10. public class MainActivity extends Activity {  
    11.     private Button btn;  
    12.     @Override 
    13.     public void onCreate(Bundle savedInstanceState) {  
    14.         super.onCreate(savedInstanceState);  
    15.         setContentView(R.layout.main);  
    16.           
    17.         btn = (Button)findViewById(R.id.btn);  
    18.         //响应按钮btn事件  
    19.         btn.setOnClickListener(new OnClickListener() {        
    20.             @Override 
    21.             public void onClick(View v) {  
    22.                 //显示方式声明Intent,直接启动SecondActivity  
    23.                 Intent it = new Intent(MainActivity.this,SecondActivity.class);  
    24.                 //启动Activity  
    25.                 startActivity(it);            
    26.             }  
    27.         });  
    28.     }  

    SecondActivity.java

    1. package com.android.test.activity;  
    2.  
    3. import android.app.Activity;  
    4. import android.content.Intent;  
    5. import android.os.Bundle;  
    6. import android.view.View;  
    7. import android.view.View.OnClickListener;  
    8. import android.widget.Button;  
    9.  
    10. public class SecondActivity extends Activity {  
    11.     private Button secondBtn;  
    12.     @Override 
    13.     protected void onCreate(Bundle savedInstanceState) {  
    14.         super.onCreate(savedInstanceState);  
    15.         setContentView(R.layout.second);  
    16.           
    17.         secondBtn=(Button)findViewById(R.id.secondBtn);      
    18.         //响应按钮secondBtn事件  
    19.         secondBtn.setOnClickListener(new OnClickListener() {                      
    20.             @Override 
    21.             public void onClick(View v) {  
    22.                 //显示方式声明Intent,直接启动MainActivity  
    23.                 Intent intent = new Intent(SecondActivity.this,MainActivity.class);  
    24.                 //启动Activity  
    25.                 startActivity(intent);                
    26.             }  
    27.         });  
    28.     }  

    AndroidManifest.xml清单文件,16~18行为SecondActivity在清单文件里的声明

    1. <?xml version="1.0" encoding="utf-8"?> 
    2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    3.       package="com.android.test.activity" 
    4.       android:versionCode="1" 
    5.       android:versionName="1.0"> 
    6.     <uses-sdk android:minSdkVersion="10" /> 
    7.  
    8.     <application android:icon="@drawable/icon" android:label="@string/app_name"> 
    9.         <activity android:name=".MainActivity" 
    10.                   android:label="@string/app_name"> 
    11.             <intent-filter> 
    12.                 <action android:name="android.intent.action.MAIN" /> 
    13.                 <category android:name="android.intent.category.LAUNCHER" /> 
    14.             </intent-filter> 
    15.         </activity> 
    16.         <activity android:name=".SecondActivity" 
    17.                   android:label="@string/app_name"> 
    18.         </activity> 
    19.     </application> 
    20. </manifest> 

    效果图:

     3.2.Activity之间传递数据

     在Android开发中不同的Activity之间要传递数据,就需要用到对象Bundle,讲要传递的信息封装在该对象里面,并通过Intent对象传递到另一个Intent中。

    下面的实例在MainActivity中输入用户名数据,并将该用户名传递给SecondActivity:

    main.xml

    1. <?xml version="1.0" encoding="utf-8"?> 
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    3.     android:orientation="vertical" 
    4.     android:layout_width="fill_parent" 
    5.     android:layout_height="fill_parent" 
    6.     > 
    7.     <TextView    
    8.         android:layout_width="fill_parent"   
    9.         android:layout_height="wrap_content"   
    10.         android:text="@string/hello" 
    11.         /> 
    12.     <EditText   
    13.         android:id="@+id/txt" 
    14.         android:layout_width="fill_parent" 
    15.         android:layout_height="wrap_content" 
    16.         android:hint="请输入用户名" 
    17.         /> 
    18.     <Button   
    19.         android:id="@+id/btn" 
    20.         android:layout_width="wrap_content"   
    21.         android:layout_height="wrap_content"   
    22.         android:text="确定" 
    23.         /> 
    24. </LinearLayout> 

    second.xml

    1. <?xml version="1.0" encoding="utf-8"?> 
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    3.     android:orientation="vertical" 
    4.     android:layout_width="fill_parent" 
    5.     android:layout_height="fill_parent" 
    6.     > 
    7.     <TextView    
    8.         android:id="@+id/secondTxt" 
    9.         android:layout_width="fill_parent"   
    10.         android:layout_height="wrap_content"   
    11.         /> 
    12. </LinearLayout> 

     strings.xml

    1. <?xml version="1.0" encoding="utf-8"?> 
    2. <resources> 
    3.     <string name="hello">MainActivity</string> 
    4.     <string name="app_name">ActivityDemo</string> 
    5.     <string name="app_name1">SecondActivity</string> 
    6. </resources> 

    MainActivity.java

    1. package com.android.test.activity;  
    2.  
    3. import android.app.Activity;  
    4. import android.content.Intent;  
    5. import android.os.Bundle;  
    6. import android.view.View;  
    7. import android.view.View.OnClickListener;  
    8. import android.widget.Button;  
    9. import android.widget.EditText;  
    10.  
    11. public class MainActivity extends Activity {  
    12.     private Button btn;  
    13.     private EditText txt;  
    14.     @Override 
    15.     public void onCreate(Bundle savedInstanceState) {  
    16.         super.onCreate(savedInstanceState);  
    17.         setContentView(R.layout.main);  
    18.           
    19.         btn = (Button)findViewById(R.id.btn);  
    20.         txt=(EditText)findViewById(R.id.txt);  
    21.         //响应按钮btn事件  
    22.         btn.setOnClickListener(new OnClickListener() {        
    23.             @Override 
    24.             public void onClick(View v) {  
    25.                 //获得用户名字符串  
    26.                 String useName=txt.getText().toString();  
    27.                 //声明Bundle对象  
    28.                 Bundle data=new Bundle();  
    29.                 //讲用户名信息添加到Bundle  
    30.                 data.putString("useName", useName);  
    31.                 //显示方式声明Intent,直接启动SecondActivity  
    32.                 Intent it = new Intent(MainActivity.this,SecondActivity.class);  
    33.                 //为Intent添加Bundle  
    34.                 it.putExtras(data);  
    35.                 //启动Activity  
    36.                 startActivity(it);            
    37.             }  
    38.         });  
    39.     }  

    SecondActivity.java

    1. package com.android.test.activity;  
    2.  
    3. import android.app.Activity;  
    4. import android.content.Intent;  
    5. import android.os.Bundle;  
    6. import android.widget.TextView;  
    7.  
    8. public class SecondActivity extends Activity {  
    9.     private TextView secondTxt;  
    10.     @Override 
    11.     protected void onCreate(Bundle savedInstanceState) {  
    12.         super.onCreate(savedInstanceState);  
    13.         setContentView(R.layout.second);  
    14.         //获得Intent  
    15.         Intent it=getIntent();  
    16.         //从Intent中获得Bundle对象  
    17.         Bundle bundle=it.getExtras();  
    18.         //从Bundle中获得那么  
    19.         String name=bundle.getString("useName");  
    20.         secondTxt=(TextView)findViewById(R.id.secondTxt);  
    21.         secondTxt.setText(name);  
    22.     }  

    AndroidManifest.xml清单文件

    1. <?xml version="1.0" encoding="utf-8"?> 
    2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    3.       package="com.android.test.activity" 
    4.       android:versionCode="1" 
    5.       android:versionName="1.0"> 
    6.     <uses-sdk android:minSdkVersion="10" /> 
    7.  
    8.     <application android:icon="@drawable/icon" android:label="@string/app_name"> 
    9.         <activity android:name=".MainActivity" 
    10.                   android:label="@string/app_name"> 
    11.             <intent-filter> 
    12.                 <action android:name="android.intent.action.MAIN" /> 
    13.                 <category android:name="android.intent.category.LAUNCHER" /> 
    14.             </intent-filter> 
    15.         </activity> 
    16.         <activity android:name=".SecondActivity" 
    17.                   android:label="@string/app_name1"> 
    18.         </activity> 
    19.     </application> 
    20. </manifest> 

    效果图:

  • 相关阅读:
    问题:弹窗还没点击确认就执行了跳转
    关于版本的问题
    timeUtil
    使用jframe编写一个base64加密解密工具
    JMeter 命令行(非GUI模式)详解(一)-分布式(远程)执行脚本及查看指定结果、日志
    jmeter分布式压测 java.io.FileNotFoundException: rmi_keystore.jks (系统找不到指定的文件。)
    mysql5.7日志时间与系统时间不一致
    mysql查看执行sql语句的记录日志
    Appium如何获取appPackage和appActivity
    关于测试设置
  • 原文地址:https://www.cnblogs.com/xiaochao1234/p/3559293.html
Copyright © 2020-2023  润新知