Android学习笔记之Intent穿梭于各个Activity之间

来源:互联网 发布:face gossip软件 编辑:程序博客网 时间:2024/04/30 06:24

当我们在写界面的时候,会想怎样把当前窗口的数据成功的传递到之间想要的窗口中显示,这时候Intent起到很大的作用,下面我们用一个简单的例子来诠释,它是怎样穿梭的:

MainActivity类主要代码:

public void btnClick(View v){
if(v.getId()==R.id.btn){
Intent intent=new Intent(this,SecondActivity.class);
intent.putExtra("date", "
This is my SecondActivity!");
startActivity(intent);
}
}


SecondActivity类主要代码

public class SecondActivity extends Activity {

TextView tv;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
tv=(TextView) findViewById(R.id.tv);

Intent intent=getIntent();
String date=intent.getStringExtra("date");
tv.setText(date);

}

这时候运行完就能成功的把活动一的数据传递到活动二的TextView中显示了!

我们实现了向下一个活动传递数据,那么能不能将数据返回到上一个活动呢?答案当然是Yes!下面来看一下是如何解决的:

核心代码实现如下:

在MainActivity类里修改启动活动的方法

public void btnClick(View v){
if(v.getId()==R.id.btn){
Intent intent=new Intent(this,SecondActivity.class);
intent.putExtra("date", "Hello SecondActivity!");
startActivityForResult(intent, 1);
}
}


SecondActivity类里面创建一个按钮onClick方法

public void btnClick(View v){
if(v.getId()==R.id.btn){
Intent intent = new Intent();
intent.putExtra("return_data", tv.getText());
setResult(RESULT_OK, intent);
finish();
}
}

由于我们是使用startActivityForResult()方法来启动SecondActivity的,在它被销毁之后会回调上一个活动的onActivityResult()方法,因此我们需要在MainActivity类中重写这个方法来得到返回的数据:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
switch(requestCode){
case 1:
if(resultCode==RESULT_OK){
String data=intent.getStringExtra("return_data");
tv1.setText(data);
Log.d("TAG", data);


}
break;
default:
}
};

这样就完成了向上一个活动返回数据的功能!

0 0