接上一篇: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 中添加所需的 元素。

添加文本视图

android 开启一个新的页面栈 安卓开发新建页面_android 开启一个新的页面栈

显示消息

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>

至此,小例子便完成了。