Android 第五课——Activity基础

1 Activity 概念 

呈现在手机上的视图界面,类似于web程序的Servlet,它的父类是Context(上下文)。

2 Activity 创建

1)新建一个继承Activity的类

2)重写onCreate方法,这个方法会在Activity启动时第一个被调用,在这个方法中我们一般会有这两个步骤:

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

3)在AndroidManifest中注册Activity,AndroidManifest文件犹如web程序中的web.xml文件

       <activity
            android:name="com.hnust.moon.MainActivity"
            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=".OtherActivity"
            android:label="other_activity">
        </activity>

4)一个Activity只是一个视图,我们需要在视图中设置UI布局,那么还要放置组件在Activity中。

3 多个Activity之间相互切换

假设我们按照以上步骤已经创建了两个Activity,这时我们可以通过intent进行数据动作调用:

MainActivity中:

    Intent intent = new Intent();
    intent.setClass(MainActivity.this, OtherActivity.class);
    intent.putExtra("name", "heweipo_test");
    MainActivity.this.startActivity(intent);
    OtherActivity中
    Intent intent = this.getIntent();
    String value = intent.getStringExtra("name");
    .....

4 Activity中添加菜单

1)首先继承ActionBarActivity

2)重写onCreateOptionsMenu和onOptionsItemSelected;前者是按下菜单按钮时触发的事件,我们一般在这里初始化菜单的组件;后者是当菜单的具体某一项被点击时触发,这里主要是编写每一个菜单项的具体业务功能。

3)java代码初始化菜单组件如下:onCreateOptionsMenu 具体实现

    menu.add(0, 8080, 1, R.string.exit);//menu.add(group,itemID,order,title);
    menu.add("file");
    SubMenu sub = menu.addSubMenu("sub"); 
    sub.add(group,itemID,order,title);//添加子菜单使用 
    getMenuInflater().inflate(R.menu.main, menu); //从资源文件中找到name为main.xml的文件然后强制转为当前activity下的菜单。

XML文件实现

    <item
        android:id="@+id/mainActivity_operation"
        android:title="@string/mainActivity_operations"
        >
        <menu>
            <item
                android:id="@+id/menu_addition"
          android:title="@string/addition"
          />
            <item
                android:id="@+id/menu_subtraction"
          android:title="@string/subtraction"
          />
        </menu>
      </item>
    <group android:id="group"> 菜单分组控制
        <item android:id="@+id/file2" android:title="file2"></item>
        <item android:id="@+id/file3" android:title="file3"></item>
    </group>

4)关于菜单项点击时具体处理:onOptionsItemSelected

        int id = item.getItemId();
        switch (id) {
  case R.id.action_settings:
   break;
  case 8080:
   finish();
   break;
 }
        return super.onOptionsItemSelected(item);

5 横屏与竖屏

1)activity初始化时或者横竖屏切换时 onCreate方法都会被调用。关于这个问题,如果我们的在activity中刚刚输入了部分内容,结果

因为屏幕横竖发生变化,会不会导致以前内容丢失呢?Google是这样解决的问题的,如果横屏和竖屏中layout的组件有相同的ID,那么Google会缓存这部分内容,根据ID在对应的组件上添加以前的内容,但是要是没有ID,或者找不到ID,那么这些内容肯定会丢失!另外,赋值这些内容并不是在onCreate方法调用之前而是之后,所以在onCreate方法是不可能获取到缓存的值的,同时我们也不能在onCreate方法中为组件赋值,因为会被覆盖。横屏或竖屏分开布局只要新建两个与layout同目录下的文件夹layout_land与layout_port.

2)onConfigurationChanged(configure)

<activity android:name="..." android:configChanges="orientation|keyboardHidden|screen...">
    <intent-filter>........</intent-filter>
</activity>

如果我们在配置文件如下指定,那么横竖屏替换时,就不会调用onCreate方法,而是调用onConfigurationChanged

this.getResources().getConfiguration().orientation ,configure.orientation  同样可以判断方向。

3)控制横屏与竖屏是在AndroidManifest文件中Activity中设置android:screenOrientation值,有如下几个值:

  1. unspecified 默认值,由系统判断状态自动切换
  2. landscape 横屏
  3. portrait 竖屏
  4. user 用户当前设置的orientation值
  5. behind 下一个要显示的Activity的orientation值
  6. sensor 使用传感器 传感器的方向
  7. nosensor 不使用传感器 基本等同于unspecified
时间: 2024-10-06 08:46:41

Android 第五课——Activity基础的相关文章

Android 第六课——Activity高级

?Activity 生命周期: 生命周期7个方法的调用时机: 1)onCreate:第一次创建这个Activity时,也就是系统中没有缓存当前的Activity时,这个方法首先被调用.调用之后这个Activity就会被压入所谓的Android Task栈中缓存起来,下次用时出栈就可以.所以,为了更加节约资源,我们一般把Activity所对应的layout中拥有的组件首先使用private作为这个Activity的私有成员,然后在onCreate方法中初始化,这样只要在Activity创建的时候,

Android 四大组件之Activity 基础总结(1)

Activity 是我们在学习android 的时候最先接触到的东西,也是android 开发过程中不可少的组件.而 在我们android 学习中,对activity 有个全面的认识是很重要的.本人在学习android 以来,对activity 也是又爱又恨,所以特意做了个总结,希望能对 那些 activity 认识还不够的"同鞋"一些帮助. 内容提要 1.Activity 的概念 2.Activity 类继承关系 3.Activity 的生命周期 4.Activity 横竖屏切换时生

Android 第六课——Activity生命周期

声明:本文转载自 http://blog.csdn.net/liuhe688/article/details/6733407 , 感觉读了这篇文章之后,对Activity又是一个更深层次的理解,所以果断手贱转载了!希望自己以后能多看看这篇文章,提升自己! 熟悉javaEE的朋友们都了解servlet技术,我们想要实现一个自己的servlet,需要继承相应的基类,重写它的方法,这些方法会在合适的时间被servlet容器调用.其实android中的Activity运行机制跟servlet有些相似之处

Android第五课 编译错误分析

1)Error 1C/C++ Problem问题 DescriptionDescription Resource Path Location Type make.exe: *** [obj/local/armeabi-v7a/libtest.so] Error 1C/C++ Problem解决    通过Eclipse无法定位到相关的错误信息,因此进入项目的jni目录,执行ndk-build指令,打印出详细的错误细节.根本原因是没有实现一个纯虚函数的接口 2)Type jint could no

第五课(基础)

添加数据 通常情况下,向数据表中添加的新记录应该包含表所有字段,即为该表中的所有字段添加数据,分为两种. 1.INSERT语句中指定所有字段名 向表中添加新记录时,可以在INSERT语句中列出表的所有字段名,语法格式:INSERT INTO 表名(字段名1,字段名2,......)VALUES(值1,值2,......);/*字段名1表示数据表中的字段名称,此处必须列出表所有字段的名称,值1表示每个字段的值,每个值的顺序.类型必须与对应的字段相匹配*/执行结果如下: 为了验证数据是否添加成功,使

【Android开发学习笔记】【第五课】Activity的生命周期-上

今天学习Activity当中的七个生命周期函数: 首先得说一个事情,就是在代码当中如果加入了 System.out.println(" ------");之后,如何查看这里面的输出内容 打开之后只输入“Filter Name”和“by Log Tag” 即可 添加成功后可以看到 本次学习主要总结如下: 1.onCreate() Acitivity首次创建时被调用.用于设置Acitivity的布局文件,绑定按钮监听器等一些普通静态操作. 2.onStart() Acitivity对用户可

Android Activity基础详解

一.Activity简介 Activity 是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话.拍摄照片.发送电子邮件或查看地图等操作. 每个 Activity 都会获得一个用于绘制其用户界面的窗口.窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上. 一个应用通常由多个彼此松散联系的 Activity 组成. 一般会指定应用中的某个 Activity 为"主" Activity,即首次启动应用时呈现给用户的那个 Activity. 而且每个 Activity 均可启动另

【Android开发学习笔记】【第四课】基础控件的学习

通过一个简单的例子来学习下面几种控件: 1.TextView:简单的文本显示控件 2.EditText:可以编辑的文本框 3.Button:按钮 4.Menu:这里指的是系统的Menu 5.Toast:消息提示控件,类似于MFc的tip(不知道理解的对不对) 顺便用到上一次学习的多个Activity之间传递数据的技术,来做一个小的计算乘法的case 步骤: (1)主Activity 和显示结果的 Activity 都采用线性布局,下面是布局文件的源代码: <LinearLayout xmlns:

Android学习路线(十五)Activity生命周期——重新创建(Recreating)一个Activity

先占个位置,下次翻译~ :p There are a few scenarios in which your activity is destroyed due to normal app behavior, such as when the user presses the Back button or your activity signals its own destruction by calling finish(). The system may also destroy your