Android学习笔记之Intent穿梭于各个Activity之间
2015-11-05 21:03
429 查看
当我们在写界面的时候,会想怎样把当前窗口的数据成功的传递到之间想要的窗口中显示,这时候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:
}
};
这样就完成了向上一个活动返回数据的功能!
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:
}
};
这样就完成了向上一个活动返回数据的功能!
相关文章推荐
- android studio中更改文件名
- Android学习札记52:广播(Broadcast)基础篇
- 【Android工具】apktool反编译
- Android 控件 —— Navigation Drawer(导航抽屉)模式
- 从驱动层分析android的Binder机制
- 从驱动层分析android的Binder机制-android学习之旅(83)
- 从驱动层分析android的Binder机制-android学习之旅(83)
- 从驱动层分析android的Binder机制-android学习之旅(83)
- Android Studio 自定义属性
- intellij idea下搭建android环境遇到的rendering problem问题及部分解决方式
- 通过onActivityResult()先跳转到联系人界面,然后把传回来的手机号显示到应用的EditText上
- Android开发实践:Java层与Jni层的数组传递
- Android的界面提醒之对话框Dialog
- android 沉浸式状态栏
- Android之BaseAdapter
- Android中selector的使用
- [置顶] 【android】Android中图形图片及处理相关Api的小总结
- Android资源命名规范
- [Android学习笔记一] ContentProvider组件开发详解
- Android基础入门教程——2.3.1 TextView(文本框)详解