接上一篇:1、Android开发-使用Android Studio 布局编辑器编写一个小例子 在上一篇使用布局编辑器生成一个发送消息的界面,接下来给send 按钮添加事件,并打开一个新的activity来传递参数并显示到新的窗口中。
给按钮添加事件
- 在 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
}
}
- 返回到 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 构造函数会获取两个参数:Context 和 Class。
- 首先使用 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>
至此,小例子便完成了。