zoukankan      html  css  js  c++  java
  • 建立、配置和使用Activity——启动、关闭Activity

            一个Android应用通常都会包含多个Activity,但只有一个Activity会作为程序的入口——当该Android应用运行时将会自启动并执行该Activity。至于应用中的其他Activity,通常都由入口Activity启动,或由入口Activity启动的Activity启动。

           Activity启动其他Activity有如下两个方法。

    • startActivity(Intent intent):启动其他Activity。
    • startActivityForResult(Intent intent,int requestCode):以指定指定的请求码(requestCode)启动Activity,而且程序将会等到新启动Activity的结果(通过重写onActivityResult(...)方法来获取)。

         启动Activity时可指定一个requestCode参数,该参数代表了启动Activity的请求码。这个请求码的值由开发者根据业务自行设置,用于标识请求来源。

         上面两个方法都用到了Intent参数,Intent是Android应用里各组件之间通信的重要方式一个Activity通过Intent来表达自己的“意图”——想要启动哪个组件,被启动的组件即可是Activity组件,也可是Service组件。

          Android为关闭Activity准备了如下两个方法。

    • finish():结束当期Activity。
    • finishActivity(int requestCode):结束以startActivityForResult(Intent intent,int requestCode)方法启动的Activity。

         下面的示例程序示范了如何启动Activity,并允许程序在两个Activity之间切换。

         第一个Activity的界面布局文件如下:

         

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
      >
      <Button android:id="@+id/bn"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="启动第二个Activity"/>
       
    </LinearLayout>

    对应的Java代码如下:

    package com.example.studyactivity;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class StartActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_start);
            //获取应用程序的bn按钮
            Button bn=(Button)findViewById(R.id.bn);
            //为bn按钮绑定事件监听器
            bn.setOnClickListener(new OnClickListener(){
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    //创建需要启动的Activity对应的Intent
                    Intent intent=new Intent(StartActivity.this,SecondActivity.class);
                    //启动intent对应的Activity
                    startActivity(intent);
                }
            });
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.start, menu);
            return true;
        }
    
    }

    上面的程序中粗体字代码就是在Activity中启动其他Activity的关键代码。

       程序中第二个Activity的界面同样简单:它只包含两个按钮,一个按钮用于简单的返回上一个Activiy(并不关闭自己),另一个按钮用于结束自己并返回上一个Activity。

        第二个Activity的界面布局文件如下:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
      >
        
       <Button android:id="@+id/previous"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="返回"/>
       <Button android:id="@+id/close"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="返回并关闭自己"/>
    </LinearLayout>

    下面是第二个Activity的Java代码。
     

    package com.example.studyactivity;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class SecondActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_second);
            //获取应用程序中的previous按钮
            Button previous=(Button)findViewById(R.id.previous);
            //获取应用程序的close按钮
            Button close=(Button)findViewById(R.id.close);
            //为previous按钮绑定事件监听器
            previous.setOnClickListener(new OnClickListener(){
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                     //获取启动当前Activity的上一个Intent
                    Intent intent=new Intent(SecondActivity.this,StartActivity.class);
                    //启动intent对应的Activity
                    startActivity(intent);
                }
                
            });
            //为close按钮绑定事件监听器
            close.setOnClickListener(new OnClickListener(){
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    //获取当前Activity的上一个Intent
                    Intent intent=new Intent(SecondActivity.this,StartActivity.class);
                    //启动Intent对应的Activity
                    startActivity(intent);
                    //结束当前Activity
                    finish();
                }});
            
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.second, menu);
            return true;
        }
    
    }

     上面的程序中两个按钮的监听器里的代码只有一行区别:finish(),如果有这行代码,则表明该Activity会结束自己。

     运行将看到下图:

     单击上图中的按钮将看到下图效果:

        

  • 相关阅读:
    L347
    2019.4.22 英语阅读
    L345 大脑复生
    L343 中译英
    L342 Air Pollution Is Doing More Than Just Slowly Killing Us
    Is It Always a Good Idea to Reach Outside Your Comfort Zone?
    2019.4月 商务英语场景
    元器件横截面-这里有很多专业词汇
    python 列表和元组 还有range
    python 基本数据类型简介intstr bool
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3419497.html
Copyright © 2011-2022 走看看