2、Android开发-启动一个新的activity页面小例子

接上一篇:1、Android开发-使用Android Studio 布局编辑器编写一个小例子
在上一篇使用布局编辑器生成一个发送消息的界面,接下来给send 按钮添加事件,并打开一个新的activity来传递参数并显示到新的窗口中。

给按钮添加事件

  1. app > java > com.example.myfirstapp > MainActivity 文件中,添加以下 sendMessage() 方法桩:编写一个事件触发的方法
public class MainActivity extends AppCompatActivity {

    public static final String messageKey = "com.android.MESSAGE";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    /** Called when the user taps the Send button */
    public void sendMessage(View view) {
        // Do something in response to button
    }
}
  1. 返回到 activity_main.xml 文件,并从该按钮调用此方法:
  • 选择布局编辑器中的相应按钮。
  • 在 Attributes 窗口中,找到 onClick 属性,并从其下拉列表中选择 sendMessage [MainActivity]。
  • 现在,当用户点按该按钮时,系统将调用 sendMessage() 方法。

构建参数传递对象 Intent

Intent 是在相互独立的组件(如两个 activity)之间提供运行时绑定功能的对象。Intent 表示应用执行某项操作的意图。您可以使用 intent 执行多种任务,但在本课中,您的 intent 将用于启动另一个 activity。

 /** Called when the user taps the Send button */
    public void sendMessage(View view) {
        //  创建一个Intent对象,参数为 Context 和 Class
        Intent intent = new Intent(this, DisplayMessageActivity.class);
        //获取文本框组件对象
        EditText editText  = (EditText) findViewById(R.id.editTextTextPersonName);
        //获取文本内容
        String message = editText.getText().toString();
        // 包装传递对象
        intent.putExtra("com.dic.firstandroidproject.Message",message);
        //启动另一个activity
        startActivity(intent);
    }

代码解析:

sendMessage() 将发生以下情况:

  • Intent 构造函数会获取两个参数:ContextClass
  • 首先使用 Context 参数,因为 Activity 类是 Context 的子类。
  • 在本例中,系统将 Intent, 传递到的应用组件的 Class 参数是要启动的 activity。
  • putExtra() 方法将 EditText 的值添加到 intent。Intent 能够以称为“extra”的键值对形式携带数据类型。
  • 您的键是一个公共常量 “com.dic.firstandroidproject.Message”,因为下一个 activity 将使用该键检索文本值。为 intent extra 定义键时,最好使用应用的软件包名称作为前缀。这样可以确保这些键是独一无二的,这在您的应用需要与其他应用进行交互时会很重要。
  • startActivity() 方法将启动一个由 Intent 指定的 DisplayMessageActivity 实例。接下来,您需要创建该类。

创建第二个 activity

若要创建第二个 activity,请按以下步骤操作:

  • 在 Project 窗口中,右键点击 app 文件夹,然后依次选择 New > Activity > Empty Activity
  • 在 Configure Activity 窗口中,输入“DisplayMessageActivity”作为 Activity Name。将所有其他属性保留为默认设置,然后点击 Finish。

Android Studio 会自动执行下列三项操作:

  • 创建 DisplayMessageActivity 文件。
  • 创建 DisplayMessageActivity 文件对应的布局文件 activity_display_message.xml。
  • 在 AndroidManifest.xml 中添加所需的 元素。

添加文本视图

在这里插入图片描述

显示消息

public class DisplayMessageActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_display_message);

        Intent intent = getIntent();
        String message = intent.getStringExtra("com.dic.firstandroidproject.Message");

        // Get the Intent that started this activity and extract the string
//        Intent intent = getIntent();
//        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

        // Capture the layout's TextView and set the string as its text
        TextView textView = findViewById(R.id.textView);
        textView.setText(message);
    }
}

添加向上导航功能

AndroidManifest.xml 文件中声明哪个 activity 是逻辑父级。打开 app > manifests > AndroidManifest.xml 文件,找到 DisplayMessageActivity 的 标记,然后将其替换为以下代码:

        <activity
            android:name=".DisplayMessageActivity"
            android:parentActivityName=".MainActivity">
        <!-- The meta-data tag is required if you support API level 15 and lower -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".MainActivity" />
        </activity>

至此,小例子便完成了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

senda66

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值