前言
承接上一篇,
接下来介绍点击 Send 按钮后的操作。
响应发送按钮
1. res/layout 目录下。打开 activity_my.xml
2. 在<Button> 元素里面,添加属性 android:onClick
res/layout/activity_my.xml
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage" />
sendMessage - 这是点击按钮时触发的方法名。
3. 在com.oscar999.helloworld 包下, 打开MainActivity.java 文件(这是我的本地java 包及类名)
在这个类中,添加 sendMessage() 方法, 类似:
/** Called when the user clicks the Send button */
public void sendMessage(View view) {
// Do something in response to button
}
这个方法的定义要求如下:
- 必须是 public 的
- void 的返回值
- View 作为其唯一的参数
构建一个意图(Intent)
Intent 是一个提供两个独立组件运行时组合(类似两个 activities)。
1. sendMessage 方法内容添加如下:
public void sendMessage(View view) {
Intent intent = new Intent(this, DisplayMessageActivity.class);
}
导入Intent 类
import android.content.Intent;
2. 取得EditText 输入的内容, 放入intent 的 extra 中
public void sendMessage(View view) {
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
}
Intent 可以通过键值对的方式传递值。
3. 在 java 中 添加 EXTRA_MESSAGE 的定义
public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.oscar999.helloworld.MESSAGE";
4. 在 sendMessage()方法中, 呼叫 startActivity() 方法。传递 Intent 参数
完整代码如下:
public void sendMessage(View view) {
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
这里基本上就完成了呼叫一个 activity 的方法。接下来就要完成上面提到的 DisplayMessageActivity 的Activity.
创建第二活动(activity)
所有的Activity 的子类都必须继承 onCreate() 方法。 这个方法就是活动接收含有message 的intent, 然后呈现这个message. onCreate()方法必须使用 setContentView()方法定义活动布局。这也是活动开始设置活动组件的地方。
创建步骤:
1. New --> Android --> Android Activity
2. 选择Blank Activity, 进入如下页面
3. 以上部分输入:
Activity Name: DisplayMessageActivity
Layout Name: activity_display_message
Tiltle: My Message
Hierarchical Parent: com.oscar999.helloworld.MainActivity
点击完成
4. 打开 DisplayMessageActivity.java
这个文件有三个方法
onCreate() -- 这里会更新的方法
onOptionsItemsSelected() -> 处理操作栏向上行为的
onCreateOptionsMenu() -> 暂时用不到, 移除
5. 以上创建activity 的动作,除了新增Java 文件外, 还修改了:
strings.xml
AndroidManifest.xml
,
这里和Android 4 产生的稍微有一些差异(路径)
修改 onCreate() 方法, 让这个activity 显示的是从 MainActivity 传过来的Message , 修改后的代码如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(message);
setContentView(textView);
/*if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}*/
}
运行效果看看 ~~