文档章节

启动其他的Activity

jiejiecool
 jiejiecool
发布于 2015/02/15 15:45
字数 677
阅读 48
收藏 0
点赞 0
评论 0

接着上一篇博客,我们接受来自文本框的内容,按按钮并将内容发送,然后另外一个页面会显示我刚才输入的内容

step1:

先给button加上监听事件 ,onClick


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

当点击按钮时,就会调用MainActivity中的sendMessage方法

step2:

写sendMessage方法

//方法必须是public void 并且参数为唯一的view
public void sendMessage(View view){
    Intent intent=new Intent(this, DisplayMessageActivity.class);
    //将view赋值给edittext
    EditText editText=(EditText) findViewById(R.id.edit_messsage);
    //得到edittext的值
    String message=editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    //启动第二个activity
    startActivity(intent);
}
在这个方法中有几个地方需要注意,首先,方法必须是public void类型,并且参数唯一必须是View类型的参数
 
代码中含有Intent,Intent在英文中是企图,意图的意思,放在android中是提供两个activity连接的对象,代表一个应用(可以是activity)想要干什么,大部分时候被用来启动另一个activity。
 
Intent构造函数有两个参数,第一个是Context,在这里我们用this,代表当前的activity,第二个参数是想要传递Intent的应用组件的class对象,我们这里是DisplayMessageActivity.class,我们使用DisplayMessageActivity来显示我们输入的字母。
 
由于之前我们定义了,EditText的id为edit_message,所以这里使用findViewById得到R.java文件中的EditText并赋值
然后将输入的值放在自己定义的EXTRA_MESSAGE这个public的变量中,然后启动另一个activity
step3:
写第二个activity
右键,新建activity文件,名字为DisplayMessageActivity,可以看到里面有很多override函数,里面有oncreate()函数
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //Get message from intent
        Intent intent=getIntent();
        String message=intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
        //Create textview
        TextView textView=new TextView(this);
        textView.setTextSize(40);
        textView.setText(message.toString());
        //set the textview as the activity layout
        setContentView(textView);
    }

我们把原来的代码删掉,得到Intent实例—>得到message—>新建TextView,设置大小—>设置TextView的值—>setContentView(textView)。
然后我们启动应用
image               image

上面的是一帆风顺的结果,但是对于刚入门的我来说调试出结果还花了挺久的时间。

这是一开始报错:

image

通过调试发现sendMessage方法能进入,并且变量的值也能获得,所以很困惑,应该是缓存的问题。

继续尝试应用,报这个错误:

unable to start activity componentInfo

我调试过程中,第一个activity是没有问题的,editText的值能获得,所以问题出在第二个activity上,

结果一查代码是onCreate()中我把一开始super.onCreate()函数删掉了,哎,这样的脑残错误耽误了好多时间。

好了,这个尝试就结束了。

© 著作权归作者所有

共有 人打赏支持
jiejiecool
粉丝 3
博文 27
码字总数 8397
作品 0
东城
程序员
理解android中Activity和Task的关系

Android的每个Activity都运行在堆栈中,一个Task栈可以有多个Activity,同一个Activity也可以在不同的Task栈中。 栈顶的Activity是用户当前正在进行交互的Activity。用户不断返回的时候,栈顶...

Koon.LY
2012/08/29
0
1
activity 的属性android:taskAffinity和android:allowTask

1.清单文件中,activity 的属性 android:allowTaskReparenting 这个属性用于设定Activity能够从启动它的任务中转移到另一个与启动它的任务有亲缘关系的任务中,转移时机是在这个有亲缘关系的...

leesama
2014/11/07
0
0
Activity启动模式简单解释

android中,activity的启动模式有四种,分别为: “standard” (默认) “singleTop” “singleTask” “singleInstance” 他们分别在AndroidManifest.xml文件中可配,也可通过intent启动Act...

辉兔狼
2012/06/12
0
0
安卓系列六(Activity的启动模式以及生命周期)

一、什么是Activity? 简单的说:Activity就是布满整个窗口或者悬浮于其他窗口上的交互界面。在一个应用程序中通常由多个Activity构成,都会在Manifest.xml中指定一个主的Activity,如下设置...

火龙战士
2015/02/06
0
0
处理Activity的生命周期事件

这是官网的Activity生命周期结构图,从这个图中可以看出Activity的生命周期函数挺多的,其实他的生命周期和以往我们看到的其他组件的生命周期一样,都是从创建到销毁的过程,只不过之间多加了...

张志浩
2012/08/10
0
0
Activity经典实例一:两个Activity传递数据和对象

1、概述: Activity类直接或者间接地继承了Context、ContextWrapper、ContextThemeWrapper等基类,因此Activity可以直接调用它们的方法。 创建一个Activity需要实现某些方法,常见的是实现o...

Xushao
2012/09/05
0
1
你真的了解Activity的启动模式?

引言 当面试官说请你介绍一下activity启动模式,大多数人都能整两句,什么栈顶复用啊栈内复用啊,不过,你确定你真的懂启动模式吗? 如果你能回答出下面的问题,那么你可以直接退出当前界面。...

吴七禁
07/05
0
0
Xamarin,mono for android 用一个APP启动其他隐藏应用程序

花费了好几个小时测试最终搞定了,Mono for android用一个APP启动其他隐藏应用程序。 直接看代码: 隐藏APP(被启动)要在manifest文件配置如下,去除原本的两个标签,修改成只有一个data <A...

littleluoron
2015/04/02
0
0
android LaunchMode之SingleTask

昨天看了一下SingleTask的LaunchMode,意思是说如果一个Activity在Manifest文件中的LaunchMode设置为SingleTask时,该Activity就在一个独立的Task中。当时看了文档之后,有点不明白的是“在一...

Kingguary
2011/11/29
0
0
Android开发学习笔记(五):Starting an Activity

Starting an Activity 不像其他的编程模式中,应用程序是由main()方法发起的,Android系统启动代码在一个activity实例通过调用的回调方法,对应于特定阶段的生命周期。有一系列回调方法用于启...

AllenYao
2013/01/07
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
14分钟前
0
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
28分钟前
0
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 #!/usr/bin/expectset passwd "123456"spawn rsync -av root@192.168.133.132:/tmp/12.txt /tmp/expect {"yes...

lyy549745
29分钟前
0
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
37分钟前
0
0
matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
41分钟前
0
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
0
0
nginx负载均衡

一、nginx 负载均衡 拓扑图: 主机信息: 1、负载均衡器1(lb1):192.168.10.205 RHEL7.5 2、负载均衡器2(lb2):192.168.10.206 RHEL7.5 3、web服务器1(web01):192.168.10.207 Centos...

人在艹木中
昨天
0
0
做了一个小网站

做了一个小网站 www.kanxs123.com

叶落花开
昨天
0
0
继社会佩奇之后,又尝试了可爱的蓝胖子,有趣 Python

#哆啦A梦# !/usr/bin/env python3# -*- coding: utf-8 -*-# @Author: dong dong# @Env: python 3.6from turtle import *# 无轨迹跳跃def my_goto(x, y): penup(...

Py爱好
昨天
0
0
shell及python脚本方式登录服务器

一、问题 在工作过程中,经常会遇见需要登录服务器,并且因为安全的原因,需要使用交互的方式登录,而且shell、python在工作中也经常用到,并且可以提供交互的功能。都是利用了expect、spawn...

yangjianzhou
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部