文档章节

启动其他的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()函数删掉了,哎,这样的脑残错误耽误了好多时间。

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

© 著作权归作者所有

下一篇: Android学习二
jiejiecool
粉丝 3
博文 27
码字总数 8397
作品 0
东城
程序员
私信 提问
AndroidManifest.xml文件详解(activity)(三)

android:launchMode 这个属性定义了应该如何启动Activity的一个指令。有四种工作模式会跟Intent对象中的Activity标记(FLAG_ACTIVITY_*常量)结合在一起用来决定被调用Activity在处理Intent对...

长平狐
2012/10/16
91
0
理解android中Activity和Task的关系

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

Koon.LY
2012/08/29
0
1
处理 Activity 的生命周期事件

一些Activity可能比另外一些要重要,比如一个打进来的电话比正在玩的游戏重要;另外,android作为手机系统,内存小于台式机或者笔记本。 有时,当前的Activity可能会发现被关闭,是因为其他A...

鉴客
2011/12/19
1K
0
一篇文章搞懂 Activity 启动模式

本文大部分翻译自 《Android “launchMode” (Visualized)》, 并结合自己的理解在 中添加了补充内容 是很重要的一块知识点,每位安卓开发都应该了解它是如何运作的。大部分的开发者(包括我自...

骑摩托马斯
02/22
0
0
activity 的属性android:taskAffinity和android:allowTask

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

leesama
2014/11/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux高级文件数据操作

cat :显示切割数据 -f:选择显示切割列; -s:比现实没有分割的行 -d:自定义分隔符 cut -d ‘ ’-f 1,3 a.txt : 以空格为分隔符显示第一列和第三列;这种情况不能分隔的行也会显示出来,如...

为何不可1995
26分钟前
0
0
在Javascript中Eval函数的使用

【eval()函数】 JavaScript有许多小窍门来使编程更加容易。 其中之一就是eval()函数,这个函数可以把一个字符串当作一个JavaScript表达式一样去执行它。 举个小例子: var the_unevaled_ans...

花漾年华
38分钟前
3
0
[日更-2019.5.22、23] Android 系统的分区和文件系统(二)--Android 文件系统中的文件

声明 Android系统中有很多分区,每个分区内的文件系统一般都不同的,使用ADB进入系统/目录下可发现挂载这很多的目录,不同的目录中可来自不同的分区及文件系统; 那么,就来分下这些目录里面...

小馬佩德罗
42分钟前
2
0
数组操作相关算法

/*数组的相关的算法操作:1、在数组中找最大值/最小值*/class Test11_FindMax{public static void main(String[] args){int[] array = {4,2,6,8,1};//在数组中找最大...

architect刘源源
今天
4
0
okhttp3 以上版本在安卓9.0无法请求数据的解决方案

应用官方的说明:在 Android 6.0 中,我们取消了对 Apache HTTP 客户端的支持。 从 Android 9 开始,默认情况下该内容库已从 bootclasspath 中移除且不可用于应用。且Android P 限制了明文流量...

chenhongjiang
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部