https://www.cwiki.us/display/android/Start+Another+Activity
一个 Intent 是一个提供了在 2 个不同组件中进行运行时绑定的对象。比如说在 2 个 activity 之间进行绑定。
Intent 表示的是 app 内部在做的一些事情。你可以使用 intent 做很多的任务和事情,在本业的内容中,你仅学习到了使用 intent 启动另外一个 activity。
在 MainActivity.java 中,添加 EXTRA_MESSAGE 常量 sendMessage() 代码将会如下所示:
[code]public class MainActivity extends AppCompatActivity {
public static final String EXTRA_MESSAGE = “com.example.myfirstapp.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) {
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.editText);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
}[/code]
Android Studio 将会提示你有相关的类没有导入的错误(Cannot resolve symbol)Alt + Enter (或者 Option + Enter 在 Mac 中)。你导入的类将会显示成下面的样子:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
这个时候你可能会看到 DisplayMessageActivity 错误,没有关系,你将会在下面修复这个错误。
这里是有关 sendMessage() 方法的一些说明:
Intent 构造方法有 2 个参数:
Context 是第一个参数(这个参数被使用的原因是 Activity 类是 Context 的子类)。
app 组件的 Class 是系统应该被驱动 Intent (在这个时候 activity 应该被启动)。
putExtra() 方法添加 EditText’s 变量到 intent 中。在 Intent 可以携带数据类型为 key-value 对,这个被称为 extras。你的 Key 是 public 的常量 EXTRA_MESSAGE,因为下一个 activity 将会使用这个 key 来获得文本字符串的值。为 intent extras 使用你 app 的保名称前缀是一个好的习惯。这样可以保证你的 key 是唯一的,尤其在你的 app 和其他的 app 有交互的情况下。
startActivity() 方法将会通过 Intent 启动一个 DisplayMessageActivity 实例。现在你需要创建这个类。