android:onClick属性,修改后如下:
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" android:onClick="sendMessage" />
android:onClick属性值为sendMessage,"sendMessage"为MainActivity.java类中的一个方法,用来响应Button的点击事件。
在MainActivity.java文件中加上方法sendMessage,如下:
/** 该方法将在用户点击了send Button时调用*/ public void sendMessage(View view) { // Do something in response to button }
为了响应onClick,该方法必须满足下列条件:
方法必须为public的;
返回值必须为空(void)
有且仅有一个View类型的参数(该参数即为当前OnClick事件的源source)
这里我们在上面的sendMessage方法中添加一个意图(Intent),来启动封装我们要发送的数据;如下:
//DisplayMessageActivity.class 这里表示要启动该Activity Intent intent = new Intent(this, DisplayMessageActivity.class); //通过findViewById方法来从布局文件中找到对应的viwe对象 EditText editText = (EditText) findViewById(R.id.edit_text); String message = editText.getText().toString();//获取eidtText的数据 intent.putExtra(EXTRA_MESSAGE, message);//设置到intent对象上 startActivity(intent);//调用startActivity方法执行intent来启动DisplayMessageActivityEXTRA_MESSAGE 为我们为当前消息设置的一个key值,该值用来唯一标识当前消息,其他Activity就可以通过这个标识key来获取消息内容。
这里我们在当前Activity中定义为:
public final static String EXTRA_MESSAGE = "com.example.helloword.MESSAGE";
在前面加上包前缀,主要是用于唯一标示该key。
c、创建第二个Activity即DisplayMessageActivity
在工具栏中选择new 按钮,在弹出的对话框中选择Android ->Android Activity,如图:
点击next,如图:
工程名处Project我们选择HelloWord
Activity Name处输入:DisplayMessageActivity
Layout Name输入activity_diskplay_message
Title 即为Activity显示时的标题栏类容,这里默认的是显示DisplayMessageActivity.
点击Finish,成功创建好了DisplayMessageActivity.java文件和对应的布局文件。
打开DisplayMessageActivity.java文件,此时我们看到系统自动把对应的layout设置上了,onCreate初始代码为:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_display_message); }
在onCreate中,通过方法getIntent来获取并解析出从ActivityMain 中传来的数据。
Intent intent = getIntent(); String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
数据获取到后,我们通过一个TextView将其显示出来;
修改后的onCreate方法如下:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 从intent中获取数据 Intent intent = getIntent(); String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); TextView textView = new TextView(this); textView.setTextSize(40); textView.setText(message); //设置textView为当前的contentView setContentView(textView); }
e、在AndroidManifest.xml中声明新加的Activity,即DisplayMessageActivity
前面说了,任何要需要再系统中呈现的Activity都必须在AndroidManifest.xml中通过activity元素进行声明。
打开AndroidManifest.xml文件,我们看到DisplayActivity系统已经为我们声明了,如果系统没有自动添加,则需要我们手动加上:
<activity android:name="com.example.helloword.DisplayMessageActivity" android:label="@string/title_activity_display_message" > </activity>
f、运行程序
现在就可以运行我们的程序了。运行后,在文本输入框中输入Hello world 点击send按钮,则会跳转到另外一个Activity去,并显示出了Hello world,如图: