文档章节

启动其他的Activity

jiejiecool
 jiejiecool
发布于 2015/02/15 15:45
字数 677
阅读 48
收藏 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
android Activity启动模式

Activity的启动模式有两种:一种是在AndroidManifest.xml文件中,配置launchMode属性,还有一种是设置intent的flag的方式来启动 1、设置android:launchMode属性 可以分为四种:standard、sin...

西米小娅
09/18
0
0
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

没有更多内容

加载失败,请刷新页面

加载更多

你为什么在Redis里读到了本应过期的数据

一个事故的故事 晚上睡的正香突然被电话吵醒,对面是开发焦急的声音:我们的程序在访问redis的时候读到了本应过期的key导致整个业务逻辑出了问题,需要马上解决。 看到这里你可能会想:这是不...

IT--小哥
今天
2
0
祝大家节日快乐,阖家幸福! centos GnuTLS 漏洞

yum update -y gnutls 修复了GnuTLS 漏洞。更新到最新 gnutls.x86_64 0:2.12.23-22.el6 版本

yizhichao
昨天
5
0
Scrapy 1.5.0之选择器

构造选择器 Scrapy选择器是通过文本(Text)或 TextResponse 对象构造的 Selector 类的实例。 它根据输入类型自动选择最佳的解析规则(XML vs HTML): >>> from scrapy.selector import Sele...

Eappo_Geng
昨天
4
0
Windows下Git多账号配置,同一电脑多个ssh-key的管理

Windows下Git多账号配置,同一电脑多个ssh-key的管理   这一篇文章是对上一篇文章《Git-TortoiseGit完整配置流程》的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有...

morpheusWB
昨天
5
0
中秋快乐!!!

HiBlock
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部