• 欢迎访问Eblogs,最热门语言开发,最热门数码资讯,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入Eblogs
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏Eblogs吧
  • 欢迎大家多多留言交流哦~

跳转另一个页面Activity

AndroidDeveloperTraining 曹传欢 626次浏览 2个评论

完成上一节以后,你已经可以展示一个带有文本域和一个按钮界面的app。在这节课里面,你将在 MyActivity添加一些代码来响应用户点击发送按钮的时候跳转一个新的页面。

响应发送按钮


  1. 在 Android Studio中, 打开 res/layout 目录, 编辑 content_my.xml 文件。
  2. <Button> 元素添加 android:onClick 属性。

    res/layout/content_my.xml

    将 android:onClick 属性的值写为 "sendMessage", 这是用户点击按钮时候系统调用你对应activity的方法名。

  3. 在 java/com.mycompany.myfirstapp 目录下, 打开 MyActivity.java 文件。
  4. 在 MyActivity 这个类中, 如下图所示添加 sendMessage() 方法。

    java/com.mycompany.myfirstapp/MyActivity.java

    为了能让系统匹配到指定 android:onClick方法的方法名,命名必须和示图完全一致。需要注意的是,这个方法必须:

    • 必须是 public
    • 有一个 void 返回值
    • 有且只有一个 View 参数 (这个 View 就是点击的view)

接下来,你将会通过填写这个方法来完成阅读文本域内容和将文本内容传递到其他activity中。

构建一个 Intent


  1. 在 MyActivity.java,sendMessage() 方法里面, 使用如下代码创建一个 Intent 用来启动一个叫做 DisplayMessageActivity 的activity页面:

    java/com.mycompany.myfirstapp/MyActivity.java

    注意: 这个 DisplayMessageActivity 参考将会抛出一个错误如果你使用比如 Android Studio 这样的IDE因为这个类还不存在。现在忽略这个错误;因为你很快就会创建这个类了。

    这个构造器使用的时候需要两个参数:

    • 一个 Context 作为它的第一个参数 (这里使用thi 是因为 Activity 是Context的子类)
    • 这个 Class 是系统需要传递 Intent 的app组件(在这种情况下, 这个 activity 需要启动)

    Android Studio 会提示你必须引入 Intent 类.

  2. 在类文件的上方, 引入 Intent 类:

    java/com.mycompany.myfirstapp/MyActivity.java

    提示: 在 Android Studio中, 按住 Alt + Enter (option + return 在 Mac环境) 来引入缺少的类文件。

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

    java/com.mycompany.myfirstapp/MyActivity.java

  4. 在类文件顶部, 引入 EditText 类。在 Android Studio中, 按住 Alt + Enter (option + return 在 Mac环境) 来引入缺少的类文件。
  5. 将文本内容分配一个本地 message 变量, 然后使用 putExtra() 方法来为intent添加它的值。

    java/com.mycompany.myfirstapp/MyActivity.java

    调用 extras时 Intent 可以携带各种类型键值对数据。 这个 putExtra() 方法第一个参数是key的名称,第二个参数是值。

  6. 在 MyActivity 类文件顶部, 添加如下 EXTRA_MESSAGE 定义:

    java/com.mycompany.myfirstapp/MyActivity.java

    为了你在下个activity中能够查询到传递过来的数据,你应该使用public的常量的来定义一个常量KEY。通常使用你应用的包名作为开头是一个比较好的习惯。这将能够保证如果你的应用和其他应用有交互的话,这些Key是唯一的。

  7. 在 sendMessage() 方法中, 为了完成这个intent, 调用 startActivity() 方法, 传递step1里面创建的 Intent

有了这些新代码, 通过点击发送按钮就可以调用完整的sendMessage() 方法了:

java/com.mycompany.myfirstapp/MyActivity.java

系统会接收到这个回调以启动一个指定 Intent 的 Activity 实例。为了后面的工作你现在需要创建 DisplayMessageActivity这个类了。

创建第二个 Activity


所有 Activity 的子类都必须实现 onCreate() 方法。 这个方法就是activity接收带信息的intent的地方,然后将其呈现。同时, onCreate() 方法必须使用 setContentView() 方法定义activity的layout布局。这是这个activity执行初始化设置的地方。

使用 Android Studio 创建一个新的activity

当你创建一个新的activity时,Android Studio 包含一个 onCreate() 方法存根。 这个 New Android Activity 窗口将会出现。

  1. 在Android Studio中, 在 java 目录,选择包名, com.mycompany.myfirstapp, 右键点击, 然后选择 New > Activity > Blank Activity
  2. 在 Choose options 窗口, 填写 activity 详情:
    • 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() 方法。你稍候更新这个实现方法即可。

如果你使用的Android Studio开发的,你现在可以运行这个app了,但是不会有太多变化发生。点击发送按钮启动第二个activity界面,但是它使用了一个默认“Hello world”的模板layout。你将很快自定义一个文本view来替换这个layout。

不使用 Android Studio 创建 activity

如果你使用的是一个不同的IDE或者命令行,按照如下操作:

  1. 在项目的 src/ 目录下创建一个 DisplayMessageActivity.java 类文件, 位于 MyActivity.java 类文件旁边。
  2. 添加如下代码到文件中:

    注意: I如果你使用了一个除Android Studio以外的IDE,你的项目将不会包含setContentView()方法需要的 activity_display_message 。没有关系,因为你稍候将更新这个方法而且不再会使用那个layout。

  3. 找到你的 strings.xml 文件, 按照以下添加新activity的标题:

  4. 在你的 manifest 文件中, AndroidManifest.xml, 在 Application 元素中, 添加 DisplayMessageActivity 对应的 <activity> 元素。参考如下:

android:parentActivityName 属性声明应用程序的逻辑层次结构中该activity的父活动的名称。 系统会使用这个实现默认导航行为,比如在Android 4.1 (API level 16)或者更高版本的 Up navigation 。你可以通过使用 Support Library 来添加 <meta-data> 来为老版本提供同样的导航行为,正如展示的那样。

注意: 你的 Android SDK 可以已经包括了最新的 Android Support Library, 在你 Adding SDK Packages 这一步安装的时候。在 Android Studio使用模板的时候,Support Library 是自动添加到你的app项目 (你可以查看Android Dependencies下的库的 JAR 文件). 如果你不是使用的 Android Studio,你需要手动添加lib库到你的项目中—看完 setting up the Support Library 教程然后回到这里。

如果你使用了不同于Android Studio的IDE, 不用担心,因为app还没有编译。你将很快使用自定义文本view来更新这个activity。

接收Intent


每个 Activity 都是通过一个 Intent来唤醒的, 无论用户如何在那里导航。你都可以通过调用getIntent() 来获取你使用 Intent 启动的activity来获取传递过来的数据。

  1. 在 java/com.mycompany.myfirstapp 目录中, 编辑 DisplayMessageActivity.java 类文件。
  2. 或者这个intent同时给它分配一个本地变量。
  3. 在文件顶部引入 Intent 类文件。在 Android Studio, 按住 Alt + Enter (option + return 在 Mac环境)来引入缺失的类文件。
  4. 通过使用 getStringExtra() 方法传入 MyActivity 中的MESSAGE参数。

显示信息


    1. 在 res/layout 目录中, 编辑 content_display_message.xml 类文件。
    2. 添加一个 android:id 属性到 RelativeLayout。 你需要这个属性在你的app代码中指向一个对象。

  1. 切换回编辑 DisplayMessageActivity.java
  2. 在 onCreate() 方法中, 创建一个 TextView 对象。
  3. 设置文本大小然后使用 setText()设置内容。
  4. 将 TextView 添加到通过遍历R.id.contentid得到的 RelativeLayout 。
  5. At the top of the file, import the TextView class.In Android Studio, press Alt + Enter (option + return on Mac) to import missing classes.

完成后 onCreate() 方法的 DisplayMessageActivity 现在应该长这样:

现在你可以启动这个app了。当你打开它后,在文本域键入一些信息,然后点击Send. 第二个activity会在界面上替换第一个activity,然后显示你在第一个activity输入的信息。

就是这样,你已经成功构建了你的第一个Android app!


Eblogs , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明跳转另一个页面Activity
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(2)个小伙伴在吐槽
  1. I’ll immediately grab your rss feed as I can’t find your e-mail subscription hyperlink or e-newsletter service. Do you’ve any? Kindly let me know in order that I could subscribe. Thanks. http://www.yahoo.net
    Jim2016-07-13 06:03 回复
    • I'm so sorry~ I'll add it be later...Thank u very much~
      曹传欢2016-07-21 17:21 回复