程序功能:
使用Intent传递数据、跳转Activity。两个Activity组件,Activity1中包含一个TextView和一个Button。当点击Button时,可以启动Activity2对当前TextView中的内容进行编辑。Activity2的布局界面除了编辑TextView文本信息的编辑框外,还包含两个按钮“保存”和“放弃”。当单击“保存”,Activity2中编辑的文本将返回Activity1,并更新到Activity1中的TextView中;单击“放弃”也将返回Activity1,但之前的编辑操作将被放弃。
MainActivity.java
[java]
package org.hq.testIntent;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
private String msg = "";
private EditText editText = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText)super.findViewById(R.id.edittext);
editText.setEnabled(false);//设置编辑框不可编辑
Button send_btn = (Button)super.findViewById(R.id.send_btn);
send_btn.setOnClickListener( (OnClickListener) new OnClickListenerImpl() );
}
private class OnClickListenerImpl implements OnClickListener //实现OnClickListener类
{
@Override
public void onClick(View v)
{
Intent intent = new Intent();
msg = editText.getText().toString(); //获取编辑框中字符串
intent.putExtra("org.hq.testIntent.msg", msg); //向下一个Activity发送编辑框中的字符串,初始化时字符串为空
intent.setClass(MainActivity.this, EditActivity.class);
startActivityForResult(intent,100);//启动下一个Activity,设置一个请求值100
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==100)//如果一个返回的Activity的请求值为100,说明是本Activity是调用者
{
EditText tv = (EditText)findViewById(R.id.edittext);
String msg = "";
if ( 20 == resultCode ) //如果子Activity返回值为20,说明点击了保存按钮
{
msg = data.getStringExtra("org.hq.testIntent.msg"); //获取字符串
tv.setText(msg);//更改编辑框的内容
}
}
}
}
package org.hq.testIntent;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
private String msg = "";
private EditText editText = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText)super.findViewById(R.id.edittext);
editText.setEnabled(false);//设置编辑框不可编辑
Button send_btn = (Button)super.findViewById(R.id.send_btn);
send_btn.setOnClickListener( (OnClickListener) new OnClickListenerImpl() );
}
private class OnClickListenerImpl implements OnClickListener //实现OnClickListener类
{
@Override
public void onClick(View v)
{
Intent intent = new Intent();
msg = editText.getText().toString(); //获取编辑框中字符串
intent.putExtra("org.hq.testIntent.msg", msg); //向下一个Activity发送编辑框中的字符串,初始化时字符串为空
intent.setClass(MainActivity.this, EditActivity.class);
startActivityForResult(intent,100);//启动下一个Activity,设置一个请求值100
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==100)//如果一个返回的Activity的请求值为100,说明是本Activity是调用者
{
EditText tv = (EditText)findViewById(R.id.edittext);
String msg = "";
if ( 20 == resultCode ) //如果子Activity返回值为20,说明点击了保存按钮
{
msg = data.getStringExtra("org.hq.testIntent.msg"); //获取字符串
tv.setText(msg);//更改编辑框的内容
}
}
}
}
EditActivity.java
[java]
package org.hq.testIntent;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class EditActivity extends Activity{
private String msg = null;
privateEditText et = null;
privateIntent intent = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit);
intent = getIntent();
if ( null != intent )
{
msg = intent.getStringExtra("org.hq.testIntent.msg"); //获取父Activity传来的字符串
}
et = (EditText)super.findViewById(R.id.edittext);//事实上这个程序中两个Activity并不一定要共享同一个编辑框
et.setEnabled(true);//设置编辑框可读
et.setText(msg);//设置字串内容
Button ok_btn = (Button)super.findViewById(R.id.ok_btn);//获取确认按钮
Button return_btn = (Button)super.findViewById(R.id.return_btn); //获取返回按钮
ok_btn.setOnClickListener( (OnClickListener) new OkOnClickListenerImpl() );
return_btn.setOnClickListener( (OnClickListener) new ReturnOnClickListenerImpl());
}
private class ReturnOnClickListenerImpl implements OnClickListener //实现OnClickListener类
{
@Override
public void onClick(View v)
{
Intent intent = new Intent();
setResult(30,intent);//点击取消,不返回数据
finish(); //本次Activity结束,表面上是两个Activity交互,实际上子Activity返回后它的生命周期已经结束了,再次调用是新生成的Activity
}
}
private class OkOnClickListenerImpl implements OnClickListener //实现OnClickListener类
{
@Override
public void onClick(View v)
{
Intent intent = new Intent();
msg = et.getText().toString(); //获取编辑框中的字符串
intent.putExtra("org.hq.testIntent.msg", msg); //向下一个Activity发送数据
setResult(20,intent);
finish();//本次Activity结束,表面上是两个Activity交互,实际上子Activity返回后它的生命周期已经结束了,再次调用是新生成的Activity
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_edit, menu);
return true;
}
}
package org.hq.testIntent;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class EditActivity extends Activity{
private String msg = null;
privateEditText et = null;
privateIntent intent = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit);
intent = getIntent();
if ( null != intent )
{
msg = intent.getStringExtra("org.hq.testIntent.msg"); //获取父Activity传来的字符串
}
et = (EditText)super.findViewById(R.id.edittext);//事实上这个程序中两个Activity并不一定要共享同一个编辑框
et.setEnabled(true);//设置编辑框可读
et.setText(msg);//设置字串内容
Button ok_btn = (Button)super.findViewById(R.id.ok_btn);//获取确认按钮
Button return_btn = (Button)super.findViewById(R.id.return_btn); //获取返回按钮
ok_btn.setOnClickListener( (OnClickListener) new OkOnClickListenerImpl() );
return_btn.setOnClickListener( (OnClickListener) new ReturnOnClickListenerImpl());
}
private class ReturnOnClickListenerImpl implements OnClickListener //实现OnClickListener类
{
@Override
public void onClick(View v)
{
Intent intent = new Intent();
setResult(30,intent);//点击取消,不返回数据
finish(); //本次Activity结束,表面上是两个Activity交互,实际上子Activity返回后它的生命周期已经结束了,再次调用是新生成的Activity
}
}
private class OkOnClickListenerImpl implements OnClickListener //实现OnClickListener类
{
@Override
public void onClick(View v)
{
Intent intent = new Intent();
msg = et.getText().toString(); //获取编辑框中的字符串
intent.putExtra("org.hq.testIntent.msg", msg); //向下一个Activity发送数据
setResult(20,intent);
finish();//本次Activity结束,表面上是两个Activity交互,实际上子Activity返回后它的生命周期已经结束了,再次调用是新生成的Activity
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_edit, menu);
return true;
}
}
运行结果:
跳转:
编辑后保存: