Skip to content

Latest commit

 

History

History
51 lines (35 loc) · 2.37 KB

2014-11-14 Activities 间使用 Intent 交换信息.md

File metadata and controls

51 lines (35 loc) · 2.37 KB

Activities 间使用 Intent 交换信息

在Android系统中,Activities表示了app与用户交互的一个界面所有元素与行为,而在不同的Activities之间进行数据通信则需要使用Intent实力进行。

在 Android 中, 每个 Activity 表示了 app 与用户进行交互的一个界面所有的元素与行为的定义,用户在不同的 Activities 之间进行切换就必然涉及到系统不同 Activities 之间的通信。

系统为每个 Activity 定义了一个 Intent 实例, 一般这 Intent 实例是由系统创建 Activity 的时候指定的,我们可以通过getIntent()方法获得系统制定的 Intent 实例,从而得到其中的信息。

我们可以在被启动的第二个 activity 的 onCreate() 函数中读出 Intent 实例中的信息:

@Override
public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);

	// Get the message from the intent
	Intent intent = getIntent();
	String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

	// Create the text view
	TextView textView = new TextView(this);
	textView.setTextSize(40);
	textView.setText(message);

	// Set the text view as the activity layout
	setContentView(textView);
}

既然是要通信,那么就至少需要需要有两个 activities ,一个发送消息,一个接受消息,上面介绍了怎样获取也就是接受消息,那么下面来说下怎样向另一个 activity 发送信息。

首先,我们需要创建一个 Intent 实例,然后把需要发送的信息附加进 Intent 实例中,然后告诉系统创建新的 activity 的时候使用我们创建的 Intent 实例就行了。

public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";

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);
}

其中DisplayMessageActivity.class指定了新的需要被启动的 activitiy 的类名,系统根据这个类名启动 app 的中一个类(也就是对应的activity)。EXTRA_MESSAGE变量相当于一个地址指定了系统中 message 这个唯一变量的内容,利于接收方查找信息。