zoukankan      html  css  js  c++  java
  • Activity的创建

    一、为了创建一个新的Activity,你需要继承Activity类,定义UI,实现功能。新的Activity的最基本的框架代码如下所示:

    package com.paad.myapplication;
    
     
    
    import android.app.Activity;
    
    import android.os.Bundle;
    
    public class MyActivity extends Activity {
    
    /** Called when the activity is first created. */
    
    @Override
    
    public void onCreate(Bundle icicle) {
    
    super.onCreate(icicle);
    
    }
    
    }

    基本的Activity类代表一个空的屏幕,它没有什么大用,所以,首要的事情就是你用Viewslayouts来填充UI

    ActivityUI都是由Views来创建的。ViewsUI控件,显示数据和提供用户交互。Android提供了一些layout类,称作View Groups,它可以容纳多个View来帮助你设计复杂的UI

    在第4章中会详细描述ViewView Groups,并且讲解了哪些可用,如何用以及怎样创建自定义的Viewslayouts

    Activity指定UI,请在ActivityonCreate方法中调用setContentView方法。

    在这个代码片段里,使用了MyView的简单实例来作为ActivityUI

    @Override
    
    public void onCreate(Bundle icicle) {
    
    super.onCreate(icicle);
    
    MyView myView = new MyView(this);
    
    setContentView(myView);
    
    }

    多数情况下,你都想使用较为复杂的UI设计。你可以在代码里使用View Groups来创建布局,或者你可以利用标准Android的便利传递一个外部已经定义的layout的资源ID,如下面的代码片段所示:

    @Override
    
    public void onCreate(Bundle icicle) {
    
    super.onCreate(icicle);
    
    setContentView(R.layout.main);
    
    }

    为了能在应用程序中使用一个Activity,你需要在manifest中注册它。在application节点添加一个新的activity标签;activity里包含labeliconpermissionsthemes等元数据。没有相应的activity标签的Activity不能被启动。

    接下来的XML片段显示了如何为我刚创建的MyActivity类添加一个节点:

    <activity android:label=”@string/app_name”
    
    android:name=”.MyActivity”>
    
    <intent-filter>
    
    <action android:name=”android.intent.action.MAIN” />
    
    <category android:name=”android.intent.category.LAUNCHER” />
    
    </intent-filter>
    
    </activity>

    activity标签里,你可以增加intent-filter节点来指明你的Activity监听和响应哪种意图。每个Intent Filter可以定义一个或多个actioncategoriesIntentIntent Filter会在第5章详细描述,但是它对一个作为主要启动程序的Activity没有什么价值。它必须包含一个Intent Filter来监听MAIN动作和LAUNCHER种类,如下面高亮度的代码片段所示:

    <activity android:label=”@string/app_name”
    
    android:name=”.MyActivity”>
    
    <intent-filter>
    
    <action android:name=”android.intent.action.MAIN” />
    
    <category android:name=”android.intent.category.LAUNCHER” />
    
    </intent-filter>
    
    </activity>

    二、多个Activity 之间的关系

    多个Activity之间通过Intent来传递信息

    Intent 的基本作用

    一个 Intent 对象包含了一组信息

    (1) Component name 指定要启动啊一个 Activity

    (2) Action 指定的Activity 要做什么

    (3) Data 一个Activity 向另一个Activity 中传递怎样的数据

    (4) Extras 接收者Activity 可以从 Intent 中取出发送方 Activity 的键值对

    (5) Categories

    (6) Flags

    Intent 可以用于两个Activity 之间传递信息,这两个Activity 不一定是一个应用程序的两个界面,也可是不同的两个应用程序的界面。主要是一些系统调用会比较常用这种方式去调用。

    下面来看一个实例

    Activity_02.java

    package csdn.Activity2;  
      
    import android.app.Activity;  
    import android.content.Intent;  
    import android.net.Uri;  
    import android.os.Bundle;  
    import android.view.View;  
    import android.view.View.OnClickListener;  
    import android.widget.Button;  
      
    public class Activity_02 extends Activity {  
        /** Called when the activity is first created. */  
        private Button myButton = null;  
      
        @Override  
        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.main);  
            myButton = (Button) findViewById(R.id.myButton);  
            myButton.setOnClickListener(new MyButtonListener());  
        }  
      
        class MyButtonListener implements OnClickListener {  
            @Override  
            public void onClick(View v) {  
                // TODO Auto-generated method stub  
                // 生成一个Intent对象  
                Intent intent = new Intent();  
                intent.putExtra("testIntent", "123");  
                intent.setClass(Activity_02.this, OthersActivity.class);  
                Activity_02.this.startActivity(intent);  
            }  
        }  
    }

    OtherActivity.java 文件

    //------------------------------------------------OtherActivity.java------------------------------------  
    package csdn.Activity2;  
      
    import android.app.Activity;  
    import android.content.Intent;  
    import android.os.Bundle;  
    import android.widget.TextView;  
      
    public class OthersActivity extends Activity {  
        private TextView myTextView = null;  
        @Override  
        protected void onCreate(Bundle savedInstanceState) {  
            // TODO Auto-generated method stub  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.others);  
            Intent intent = getIntent();  
            String value = intent.getStringExtra("testIntent");  
              
            myTextView = (TextView)findViewById(R.id.myTextView);  
            //myTextView.setText(R.string.other);  
            myTextView.setText(value);  
        }  
      
    }
  • 相关阅读:
    中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030
    深入理解linux i节点(inode)
    汉字区位码、机内码学习笔记
    CSDN密码使用前10名
    GB2312汉字区位码、交换码和机内码转换方法(转)
    我的网名为什么是ma6174????
    解决CHM文档在linux下的乱码问题
    数据结构实验二:栈和队列的基本操作和应用
    精确记算程序的运行时间或者某段代码的运行时间
    键盘、游戏、ASCII码引出的一系列问题
  • 原文地址:https://www.cnblogs.com/fangchongyan/p/5356748.html
Copyright © 2011-2022 走看看