`

你的第一个android应用----(4)创建另一个活动

阅读更多

                                                               创建另一个活动

    通过学习前面的课程,你创建了带有有一个活动页面的应用,活动中包含一个文本输入框和一个按钮.这节课程,我们将实现

    当用户点击"Send"按钮时,打开一个新的活动.

 

    一.响应Send按钮

        1.打开/res/layout文件夹下的activity_my.xml文件.

        2.在"<Button>"元素中添加"android:onClick"属性.

          res/layout/activity_my.xml

 

      <Button
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="@string/button_send"
              android:onClick="sendMessage" />
 

 

        "android:onClick"属性的值为"sendMessage",它是活动的一个方法名,当用户点击按钮时,系统会调用这个方法.

        3.打开java/com.mycompany.myfirstapp文件夹下的MyActivity.java文件

        4.在MyActivity类中,添加"sendMessage()"方法,如下:

          java/com.mycompany.myfirstapp/MyActivity.java

 

/** Called when the user clicks the Send button */
public void sendMessage(View view) {
     // Do something in response to button
}
 

 

        为了使系统能匹配该方法和"android:onClick"指定的名称,方法必须满足一下条件:

            * 权限必须为"public".

            * 没有返回值.

            * 有且只有一个参数"View".

 

        接下来,你将在该方法中读取文本内容并将内容传递给另一个活动.

 

    二.创建Intent对象

        1.在"sendMessage()"方法中创建一个"Intent"对象来开启"DisplayMessageActivity"活动,如下:

           java/com.mycompany.myfirstapp/MyActivity.java

 

public void sendMessage(View view) {
       Intent intent = new Intent(this, DisplayMessageActivity.class);
}
 

 

           备注:引用"DisplayMessageActivity",IDE(如Android Studio)会提示一个错误,因为目前这个类并不存在,

               暂时不用管它,我们马上就会创建的.

 

           这里使用的"Intent"构造函数接收两个参数:

               * 第一个参数是"Context"类型("Activity"类是"Context"类的子类).

               * 第二个参数是"Class"类型,系统用于传递信息的类(在这里是即将被打开的活动类).

 

           这里Android Studio会提示你导入"Intent"类.

        2.在文件顶部导入"Intent"类:

          java/com.mycompany.myfirstapp/MyActivity.java

 

 import android.content.Intent
 

 

          提示:在Android Studio,使用Alt+Enter组合键,IDE将会自动导入需要的类.

        3.在"sendMessage()"方法中,使用"findViewById()"方法来获取"EditText"元素.

           java/com.mycompany.myfirstapp/MyActivity.java

 

public void sendMessage(View view) {
       Intent intent = new Intent(this, DisplayMessageActivity.class);
       EditText editText = (EditText) findViewById(R.id.edit_message);
}
 

 

        4.导入"EditText"类.

        5.获取文本内容并赋值给变量"message",使用"putExtra()"方法将文本内容添加到"intent"对象.

          java/com.mycompany.myfirstapp/MyActivity.java

 

public void sendMessage(View view) {
       Intent intent = new Intent(this, DisplayMessageActivity.class);
       EditText editText = (EditText) findViewById(R.id.edit_message);
       String message = editText.getText().toString();
       intent.putExtra(EXTRA_MESSAGE, message);
}
 

 

          "Intent"会把"extra"的数据以"键值对"的形式保存."putExtra()"方法接收两个参数,第一个为"键",

          第二个为"值".

        6.在"MyActivity"类的顶部,定义常量"EXTRA_MESSAGE",如下:

          java/com.mycompany.myfirstapp/MyActivity.java

 

public class MyActivity extends ActionBarActivity {
       public final static String EXTRA_MESSAGE = "com.mycompany.myfirstapp.MESSAGE";
       ...
}
 

 

          为了使另外的活动能访问这个数据,你需要定义一个公开的常量保存数据.使用你的包名作为这个常量的前缀是一种

          很好的实践.当你的程序同其他程序交互时,这能确保值的唯一性.

        7.在"sendMessage()"方法中,调用"startActivity()"方法,参数为步骤1创建的"Intent"对象.

 

          "sendMessage()"方法的完整代码如下:

          java/com.mycompany.myfirstapp/MyActivity.java

 

/** Called when the user clicks the Send button */
public void sendMessage(View view) {
       Intent intent = new Intent(this, DisplayMessageActivity.class);
       EditText editText = (EditText) findViewById(R.id.edit_message);
       String message = editText.getText().toString();
       intent.putExtra(EXTRA_MESSAGE, message);
       startActivity(intent);
}
 

 

          当该方法被调用时,系统会创建一个在"Intent"中定义的"Activity"的实例.为了使程序能正确运行,接下来我们

          创建"DisplayMessageActivity"类.

 

    三.创建显示信息的活动类

        所有"Activity"类的子类都必须实现"onCreate()"方法.这个方法接收"intent"对象来使用信息.这个方法还必须

        使用"setContentView()"方法来定义活动的布局.活动的各种组件也在这里被初始化.

 

        一(1).使用Android Studio创建一个"activity"

            当你创建一个新的活动时,Android Studio会弹出一个窗口,如图:

            1.选中"java"文件夹下的"com.mycompany.myfirstapp"包,右键选择New > Activity > Blank Activity.

            2.在窗口中填写要创建的活动的详细信息.如下:

              * Activity Name:DisplayMessageActivity

              * Layout Name:activity_display_message

              * Title:My Message

              * Hierarchical Parent:com.mycompany.myfirstapp.MyActivity

              * Package name:com.mycompany.myfirstapp

 

              单击"Finish".

            3.打开"displayMessageActivity.java"文件.

              这个类已经实现了"onCreate()"方法.同时也实现了"onOptionsItemSelected()"方法,该方法用于监听

              操作栏的弹起事件.暂时保持这两个方法不变.

            4.删除"onCreateOptionsMenu()"方法.在这个应用中我们用不到.

 

              如果你使用Android Studio开发,你现在可以运行程序,但是不会有太大的变化.点击"Send"按钮会打开

              第二个活动,它显示模板提供的默认布局和信息"Hello World".接下来我们将学习如何给这个活动自定义布局和内容.

 

        一(2).不使用Android Studio创建活动

            如果你使用其他IDE或者命令行,可以按如下方式创建活动:

 

            1.在"MyActivity.java"文件所在的路径"src/"下创建一个"DisplayMessageActivity.java"文件.

            2.在"DisplayMessageActivity.java"文件中添加如下代码:

               

 public class DisplayMessageActivity extends ActionBarActivity {
 
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.activity_display_message);
 
                  if (savedInstanceState == null) {
                         getSupportFragmentManager().beginTransaction()
                                .add(R.id.container, new PlaceholderFragment()).commit();
                  }
        }
 
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
               // Handle action bar item clicks here. The action bar will
               // automatically handle clicks on the Home/Up button, so long
               // as you specify a parent activity in AndroidManifest.xml.
               int id = item.getItemId();
               if (id == R.id.action_settings) {
                      return true;
               }
               return super.onOptionsItemSelected(item);
         }
 
         /**
          * A placeholder fragment containing a simple view.
          */
         public static class PlaceholderFragment extends Fragment {
 
                public PlaceholderFragment() { }
 
                @Override
                public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
                       View rootView = inflater.inflate(R.layout.fragment_display_message,container, false);
                       return rootView;
                }
         }
}

 

                备注:如果你使用的IDE不是Android Studio,你的项目将不会包含"setContentView()"方法所需要的

                    "activity_display_message"布局,不过没关系,因为我们不会使用这个布局,而且我们会在后面

                    更新这个方法.

            3.在"strings.xml"文件中添加新活动标题如下:

                

<resources>
        ...
        <string name="title_activity_display_message">My Message</string>
</resources>

 

            4.在"AndroidManifest.xml"文件的"Application"元素中,添加"<activity>"子元素,如下:

               

 <application ... >
        ...
        <activity
             android:name="com.mycompany.myfirstapp.DisplayMessageActivity"
             android:label="@string/title_activity_display_message"
             android:parentActivityName="com.mycompany.myfirstapp.MyActivity" >
             <meta-data
                    android:name="android.support.PARENT_ACTIVITY"
                    android:value="com.mycompany.myfirstapp.MyActivity" />
        </activity>
</application>

 

                "android:parentActivityName"属性用于声明本活动在应用罗辑层级结构中父活动的名称.系统使用

                这个值来实现默认的导航行为,例如在Android4.1(API level16)或更高版本中的向上导航.你也可以

                使用支持库(Support Library)和添加这里所使用的"<meta-data>"元素来为旧版本提供相同的导航行为.

 

                备注:你的Android SDK应该已经包含了最新的Android支持库(在你添加SDK安装包时包含的).使用

                    Android Studio中提供的模板时,支持库会自动添加到你的应用中(你可以在"Android

                    Dependencies"下查看这些库的JAR包文件).如果你没有使用Android Studio,那么你需要手动

                    将这些支持JAR包添加到你的工程中.

 

        二.接收Intent对象

            任何一个Activity对象都是由一个Intent对象调用的,不管用户是如何导航到这个活动对象的.你可以使用"getIntent()"

            方法来获取指定的Intent对象,通过Intent对象可以开启你指定的活动和获取你指定的数据.

 

            1.打开java/com.mycompany.myfirstapp路径下的"DisplayMessageActivity.java"文件.

            2.从"onCreate()"方法中删除如下代码:

               

 setContentView(R.layout.activity_display_message);

 

            3.获取Intent对象.

               

 Intent intent = getIntent();

 

            4.导入Intent类(Android Studio快捷为:Alt+Enter).

            5.通过"getStringExtra()"方法获取"MyActivity"对象传递的信息.

                

String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);

 

 

        三.显示信息

            1.在"onCreate()"方法中,创建一个"TextView"对象

                

TextView textView = new TextView(this);

 

            2.设置信息的大小和内容.

                

textView.setTextSize(40);
textView.setText(message);

 

            3.将这个TextView对象传递给"setContentView()"方法,作为这个活动布局的根视图.

                

setContentView(textView);

 

            4.导入TextView.

 

                "DisplayMessageActivity"类的"onCreate()"方法最终如下:

 

 @Override
 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        // Get the message from the intent
        Intent intent = getIntent();
        String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);
 
        // Create the text view
        TextView textView = new TextView(this);
        textView.setTextSize(40);
        textView.setText(message);
 
        // Set the text view as the activity layout
        setContentView(textView);
}

 

                运行程序,在输入框中输入信息,然后单击按钮"Send",输入的信息将会在另一个活动页面上显示.如图:

                
                到这里我们的第一个简单android应用就完成了.

  • 大小: 32.6 KB
  • 大小: 25 KB
0
0
分享到:
评论

相关推荐

    入门篇创建你的第一个android应用-Building Your First App(一):

    综上所述,入门创建Android应用的第一步是设置开发环境并使用Android SDK创建一个项目。了解项目结构和组成部分将有助于开发者后续的开发工作,包括设计用户界面、编写业务逻辑代码、配置应用资源等。随着项目的深入...

    第一个Android应用-您好,中国!.pptx

    在Android应用开发的世界里,迈出第一步至关重要。"第一个Android应用-您好,中国!" 是一个引导性的项目,旨在帮助初学者理解基本的Android Studio环境和构建过程。Android Studio是Google官方推荐的Android应用...

    013集-创建第一个android5.0应用程序

    在本教程“013集-创建第一个Android 5.0应用程序”中,我们将深入探讨如何从零开始构建一个简单的Android应用,这对于初次接触Android开发的初学者来说是一次宝贵的入门学习机会。Android 5.0,也被称为Lollipop版本...

    android-x86-64-9.0-r2.iso

    1. **准备媒介**:你需要一个空白的DVD或至少8GB的USB驱动器。 2. **写入ISO**:使用像是Rufus、Etcher这样的工具将ISO文件刻录到DVD或USB上。 3. **设置BIOS/UEFI**:启动计算机时进入BIOS或UEFI设置,更改启动顺序...

    深入浅出Android--Google手持设备应用程序设计

    《深入浅出Android--Google手持设备应用程序设计》这本书旨在通过实例教学,帮助读者全面掌握Android应用开发技术,深入了解Android在手持设备上的应用程式设计。在这个过程中,我们将探讨一系列关键知识点,涵盖...

    Android代码-一个android天气应用程序

    "uniWeather"是一个示例项目,展示了如何构建这样一个应用。在这个项目中,我们将深入探讨几个关键知识点,包括用户界面设计、数据获取、网络请求、JSON解析以及Android框架中的基本组件。 1. **用户界面设计**: ...

    Android/SDK/Platforms/android-33-ext5

    1. **Android SDK**: Android Software Development Kit,是Google提供的一个用于创建、调试和优化Android应用程序的工具集合。它包括了Android开发环境、编译工具、模拟器、API文档、库和其他开发者资源。 2. **...

    实验1-Android开发环境与第一个Android程序.doc

    4. **理解Android应用程序结构**:Package Explorer是Eclipse中的一个视图,用于展示项目文件和目录结构。在Android项目中,主要的文件和目录包括: - `AndroidManifest.xml`:定义应用程序的基本信息,如应用名、...

    android-studio-ide-201.7042882-windows.zip

    总之,Android Studio 201.7042882为Windows用户提供了一个强大且全面的开发环境,通过熟练掌握其特性和最佳实践,开发者可以更高效地构建出高质量的Android应用程序。无论是初学者还是经验丰富的开发者,都能从中...

    Android SDK (SDK Platforms)-android-34-ext8.zip

    Android SDK (SDK Platforms)-android-34-ext8.zip 是一个包含Android SDK中针对Android 34版本特定扩展组件的压缩包。这个包主要是为了开发者在构建和测试Android应用程序时使用,特别是针对Android 13(API级别34...

    linux系统android-studio-ide-193.6514223安装文件

    Android Studio是Google官方推出的Android应用程序开发集成开发环境(IDE),版本号为193.6514223的安装文件对应于Android Studio 4.0。对于Linux用户来说,安装这一版本的Android Studio能够享受到与Windows和macOS...

    android-x86_64-7.1-r2.isoandandroid-x86_64-8.1-rc2.iso

    - Android-x86 是一个开源项目,旨在为x86架构的设备(如个人电脑、笔记本电脑和平板电脑)提供Android操作系统支持。 - 该项目通过移植Android源代码到x86平台,使得用户能够在非ARM架构的硬件上运行原生的...

    android-logging-log4j-1.0.3

    在Android应用开发中,日志记录是至关重要的一个环节,它可以帮助开发者跟踪应用程序的运行状态,定位和解决潜在的问题。Log4j是一个广泛使用的Java日志框架,它提供了灵活的日志记录功能,允许开发者定制日志输出的...

    Android SDK (SDK Platforms)-android-32.zip

    1. **Android SDK (Software Development Kit)**:Android SDK是Android应用程序开发的基础,它为开发者提供了构建、调试和发布Android应用所需的工具和库。SDK包括了API文档、编译工具、模拟器、各种版本的Android...

    Android SDK (SDK Platforms)-android-26.zip

    Android SDK (SDK Platforms)-android-26.zip 是一个包含了Android开发所需的重要组件的压缩包,主要针对Android操作系统版本26,也称为Android Oreo(8.0)。这个压缩包是开发者构建、测试和调试Android应用的基础...

    Android SDK (SDK Platforms)-android-19.zip

    Android SDK (SDK Platforms)-android-19.zip 是一个包含了Android开发平台版本19的压缩包,主要用于Android开发者在构建、测试和调试针对Android 4.4 KitKat系统应用时使用。这个压缩包提供了必要的API库、工具和...

    创建Android工程--Hello World

    编写本文档的目的是为了指导初学者快速搭建Android开发环境,并通过创建一个最简单的应用程序,来学习Android应用开发的基本流程。 #### 设置Android仿真器 Android仿真器是运行在计算机上的虚拟设备,用于模拟...

    android-studio-2021.2.1.16-windows.zip

    总之,"android-studio-2021.2.1.16-windows.zip"是一个针对Windows平台的Android Studio版本,集成了各种强大的开发工具,旨在简化Android应用的创建、调试和发布流程。通过这个压缩包,开发者可以获取并安装这一...

    Android SDK (SDK Platforms)-android-34.zip

    Android SDK (SDK Platforms)-android-34.zip 是一个包含了Android操作系统第34版本(也称为Android 13)开发所需平台工具的压缩包。这个压缩文件对于开发者来说至关重要,因为它提供了构建、测试和调试Android应用...

    android-ocr-master,android-ocr-master

    "android-ocr-master"是一个专门针对Android平台的OCR开源项目,旨在帮助开发者构建能够识别并提取图像中文字的应用。 **项目概述** "android-ocr-master"项目包含了一个完整的Android OCR解决方案,主要由以下几...

Global site tag (gtag.js) - Google Analytics