zoukankan      html  css  js  c++  java
  • Android开发笔记Activity 页面跳转和传值

    一、Activity是什么

    Activity——它是一个可以同用户交互的应用程序组件。Android程序中的每个Activity都提供了一个单独的界面,它相当于Winform程序的Form。

    二、创建Activity

     在现有Project中创建Activity,可以按照:File -> New -> Other -> 选择Android/Android Activity -> 点击Next,设置Activity模板 -> 点击Next,设置Acitivity Name,Layout,Parent等信息 -> 点击Finish 完成Activity的创建。按此方式,我们在程序中创建一个名为DisplayMessageActivity,指定parent为MainActivity。

    那么如何指定Android App 默认启动的Activity呢?这就得了解文件AndroidManifest.xml

    我们可以清楚的看到我们创建的两个Activity.当我们需要设置某个Acitivity为默认启动Activity时,该Activity的必须配置包含以下信息:

                <intent-filter>

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

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

        </intent-filter>

    三、Android 页面跳转

    一个Android 程序一般是由多个Activity组成,通过一个小列子介绍下如何完成不同的Activity的跳转和切换。

    在一个Activity中打开另一个Activity,会使用到Android的另一个组件:Intent。这里以从MainActivity跳转到DispalyMessageActivity为例:

    界面代码:主页

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:context=".MainActivity"  >
    
    
            <EditText
                android:id="@+id/txtMsg"
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                
                android:inputType="text" >
            </EditText>
    
            <Button
                android:id="@+id/sendMessage"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="sendMessage"
                android:text="@string/btnSendText" />
    
    </LinearLayout>

    显示页:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".DisplayMessageActivity" >
    
        <TextView
            android:id="@+id/txtshow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:text="@string/hello_world" />
    
    </RelativeLayout>

    后台代码:

    package com.example.test;
    
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.view.Menu;
    import android.view.View;
    import android.widget.EditText;
    
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.activity_main, menu);
            return true;
        }
    
        public void sendMessage(View view)
        {
            Intent disIntent=new Intent(this,DisplayMessageActivity.class);
            EditText editText=(EditText)findViewById(R.id.txtMsg);
            disIntent.putExtra("showvalue",editText.getText().toString());
            startActivity(disIntent);
        }
    }
    
    
    package com.example.test;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.view.Menu;
    import android.widget.TextView;
    
    public class DisplayMessageActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_display_message);
            Intent showIntent=getIntent();
            String messageString=showIntent.getStringExtra("showvalue");
            TextView showtxt=(TextView)findViewById(R.id.txtshow);
            showtxt.setText(messageString);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.activity_display_message, menu);
            return true;
        }
    
    }

    运行结果:

    四、Activity生命周期

    已经很完整的描述了Activity的生命周期,以及状态转换。但这里针对上图做几点说明:

    (1)Activity生命周期中,有很多种状态。其中包括Resumed(运行态,可见且可交互),Paused(暂停,部分可见但不可交互),Stoped(停止态,不可见),Destroyed/Killed(销毁)等;

    (2)Entire Lifetime,完整的生命周期从调用onCreate()开始,直至调用onDestroy()结束;

    (3)Visible Lifetime,生命周期中可见的阶段,发生在调用onStart()之后,onStop()之前。处于Resumed,或Paused态,在这期间Activity处于屏幕上;

    (4)Foreground Lifetime,生命周期可交互的阶段,在调用onResume()之后,onPause()之前。在这期间,Activity显示在所有其他Activity之前,并获取输入焦点。

    (5)Android系统通过调用onCreate()方法创建Activity实例.onDestroy()方法释放,关闭Activity;

    (6)Android系统通过栈管理Activities,屏幕最前端的Activity位于栈顶。不在栈顶的Activity一般处于Paused状态,Stoped状态,或者Destroyed中的一种;

    (7)实际应用中,我们通过重载Android生命周期中不同的方法,实现对不同状态下Activity的控制。如:我们可以重载onCreate()方法,实现对数据库的初始化;重写onDestroy(),执行删除数据库操作等。

    (8)Activity的成功启动,会依次调用:onCreate() -> onStart() -> onResume();

    (9)关闭一个Activity,系统会依次调用:onPause()->onStop()->onDestroy();

    (10)从一个MainActivity跳转到DisplayMessageActivity时,会先调用MainActivity.onPause(),当DispalyMessageActivity打开后,MainActivity会调用onStop()进入Stoped状态;

    (11)关闭DisplayMessageActivity回到MainActivity时,系统先调用DispalyMessageActivity.onPause() ,然后依次调用MainActivity.onRestart()->MainActivity.onStart()->MainActivity.onResume()进入Resumed状态,这之后DisplayMessageActivity才会继续关闭流程,完成Activity的关闭。

  • 相关阅读:
    Android Studio 开发
    Jsp编写的页面如何适应手机浏览器页面
    电影
    Oracle 拆分列为多行 Splitting string into multiple rows in Oracle
    sql server 2008 自动备份
    WINGIDE 激活失败
    python安装 错误 “User installations are disabled via policy on the machine”
    ble编程-外设发送数据到中心
    iOS开发-NSString去掉所有换行及空格
    ios9 字符串与UTF-8 互相转换
  • 原文地址:https://www.cnblogs.com/piaoxuewuming/p/3092278.html
Copyright © 2011-2022 走看看