前提:建好第一个Activity(前面所学的都是只有一个Activity);
准备:创建父类为Activity的second Activity,再添加布局文件来排放控件;
创建onCreat来设置控件;
开始:
private OnClickListener listener=new OnClickListener()
{
public void onClick(View v)
{
Intent intent=new Intent();
intent.setClass(MainActivity.this, secondActivity.class);
startActivity(intent);//测试的时候有强制关闭的现象,要在intend Manifest中声明secondActivity
}
}//创建了新的activity,测试到此。下面开始真的代码:
这是Mainactivity:
public class MainActivity extends Activity
{
private final static int REQUEST_CODE=1;
private Button mainbtn = null;//为了返回参数所设置的按钮
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mainbtn = (Button) findViewById(R.id.mainbtn);
mainbtn.setOnClickListener(listener);
}
private OnClickListener listener=new OnClickListener()
{
public void onClick(View v)
{
Intent intent=new Intent();
intent.setClass(MainActivity.this, secondActivity.class);//通过setclass来跳转到第二个activity
//startActivity(intent);//测试的时候有强制关闭的现象,要在intend Manifest中声明secondActivity,(*)属于传递函数的例子部分,在返回参数的例子中才注释掉的
intent.putExtra("str", "Goodbye Lynn");//传递参数到第二个activity,也可以是对象,从而进入到secondActivity----(1)
(2)startActivityForResult(intent, REQUEST_CODE);//属于开始进入返回参数的例子部分,REQUEST_CODE是一个整型变量---(3)
//(3)调用startActivityForResult后,当第二个activity结束后会调用onActivityResult返回参数给第一个activity
}
};
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode==REQUEST_CODE)
{
if (resultCode==secondActivity.RESULT_CODE)
{
Bundle bundle=data.getExtras();
String str=bundle.getString("back");
Toast.makeText(MainActivity.this, str, Toast.LENGTH_LONG).show();
}
}
}
}
这是Secondactivity:
public class secondActivity extends Activity
{
public final static int RESULT_CODE=1;
private TextView secondTxt;
private Button secondBtn;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
(1)Intent intent=getIntent();//声明要接受第一个activity传过来的参数,用getIngtent()
Bundle bundle=intent.getExtras();//getExtras与putExtras呼应,返回的是一个Bundle对象,
String str=bundle.getString("str");//使用字符串来接收Buddle里面的值,即前台的值
secondTxt=(TextView)findViewById(R.id.secondTxt);//要先在main.xml中给TestView一个id
secondTxt.setText(str);//使用setText放置到屏幕的上面
//至此已经把第一个activity的参数传递的第二个activity,并更新到屏幕上面!!!
//下面是返回参数:
//注释掉(*)部分,从(2)开始
secondBtn=(Button)findViewById(R.id.secondbtn);//为(3)部分后的,返回按钮设定的事件
secondBtn.setOnClickListener(listener);
}
private OnClickListener listener=new OnClickListener()
{
public void onClick(View v)
{
Intent intent=new Intent();
intent.putExtra("back", "Back Data");//点击按钮后的返回参数,提示显示
setResult(RESULT_CODE, intent);//RESULT_CODE是一个整型变量
finish();//结束第二个activity,返回其调用它的activity
}
};
}
文章来自新浪博客:http://blog.sina.com.cn/s/blog_70458d0c0101605v.html