只有MainActivity怎么够?教你如何启动另一个Activity

学习Android这段时间以来,我一直在考虑如何打开另一个Activity的事情,可是某人和我说这不重要,很简单,你先学增删改需要用到的东西,先把单页面学流畅了,再来弄这个。
既然他说简单,那我才有动力嘛,今天研究了一下,果然也不是费神的事儿。
上周升级了AndroidStudio2.0,以后在官方未升级之前都用这个版本来学习。
这篇文章里需要达到的目的是: 在主Activity中点击一个按钮,跳转到另一个Activity,并显示前一个Activity中EditText的值。

创建第二个Activity

一、新建一个工程My Application3,在layout目录下新建activity_2.xml。

二、在MainActivity.java同目录下新建TwoActivity.java,基本构造如下,包含onCreate函数,可参照MainActivity.java。

package com.my.asus.myapplication3;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

/**
 * Created by Asus on 2016/4/21.
 */
public class TwoActivity extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_2);


    }
}

声明所有Activity

三、打开AndroidManifest.xml,添加如下代码,不声明所有Activity,可能会出现闪退的情况。元素声明了TwoActivity的父activity的名称。

        <activity
            android:name=".TwoActivity"
            android:label="@string/title_TwoActivity">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value=".MainActivity"/>
        </activity>

添加按钮点击事件

四、打开layout/activity_main.xml,添加一个EditText和一个Button,并为Button添加onClick属性。

   <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editText" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click me"
        android:id="@+id/Click_Button"
        android:layout_marginTop="58dp"
        android:onClick="sendMessage"/>

创建Intent

Intent 是一个消息传递对象,您可以使用它从其他应用组件请求操作。尽管 Intent可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个:

启动 Activity: Activity 表示应用中的一个屏幕。通过将 Intent 传递给startActivity(),您可以启动新的 Activity 实例。Intent 描述了要启动的 Activity,并携带了任何必要的数据。 如果您希望在 Activity 完成后收到结果,请调用 startActivityForResult()。在 Activity 的 onActivityResult() 回调中,您的
Activity 将结果作为单独的 Intent 对象接收。如需了解详细信息,请参阅Activity指南。
启动服务: Service
……
传递广播:
……

(以上内容引自https://developer.android.com/intl/zh-cn/guide/components/intents-filters.html

五、MainActivity.java中添加sendMessage函数,用来呼应xml中的onClick=”sendMessage”,创建Intent,并启动第二个Activity。
一个Intent可以携带各种各样类型的数据集,使用putExtra()函数来传递。

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

六、创建第五步中报错的EXTRA_MESSAGE,这个是为了在另一个Activity中查询到传递过来的值。在MainActivity顶部定义一个公共常量EXTRA_MESSAGE

public class MainActivity extends AppCompatActivity {
    public final static String EXTRA_MESSAGE="com.my.asus.myapplication3.MESSAGE";
    ……
    }

接收Intent 并显示传递的值

七、打开TwoActivity.java,并加入如下代码。

public class TwoActivity extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_2);

        Intent intent=getIntent();
        String message=intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

        TextView textView=new TextView(this);
        textView.setTextSize(40);
        textView.setText(message);
        setContentView(textView);

//        TextView textView=(TextView) findViewById(R.id.two_tV);
//        textView.setText(message);

    }
}

使用getIntent()来接收MainActivity中使用的Intent,定义一个String用来接收EXTRA_MESSAGE的值,并显示出来。这里既可以在代码中写TextView,也可以到xml中创建一个TextView,然后直接用我注释的代码。

效果

这里写图片描述 这里写图片描述

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值