如何使用Intent传递数据给下一个活动呢:
其实很简单,在我们跳转页面的时候,只要使用putExtra()方法将数据暂存到Intent中,然后在跳转后的活动中,使用getxxx()方法获得数据就可以了
实例展现:
效果展现:
效果分析:可以看到打印出了helloSecondActivity
实现代码
1.修改FirstActivity中的代码
public class FirstActivity extends AppCompatActivity {
//创建按钮对象 create button object
private Button startBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
//绑定id bind id
startBtn = findViewById(R.id.first_btn);
//设置监听 set monitor
startBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//创建将要传递的数据 create will transmit values
String str = "hello SecondAcitity";
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
//数据通过putExtra()以键值对形式传递数据 use putExtra() by key-value transmit values
intent.putExtra("hello",str);
startActivity(intent);
}
});
}
}
修改SecondActivity中的代码
public class SecondActivity extends AppCompatActivity {
private static final String TAG = "SecondActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
//通过getIntent()方法获得启动获得的Intent use getIntent() get intet object
Intent intent = getIntent();
//通过getStringExtra()获得数据 use getStringExtra() get values
String str = intent.getStringExtra("hello");
//打印数据 print values
Log.e(TAG, "onCreate: "+str );
}
}
over
如何使用Intent返回数据给上一个活动:
效果展现:AS出现了点问题,以后截图
具体代码:
1.修改FirstActivity中的代码:
public class FirstActivity extends AppCompatActivity {
//创建按钮对象 create button object
private Button startBtn;
private static final String TAG = "FirstActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
//绑定id bind id
startBtn = findViewById(R.id.first_btn);
//设置监听 set monitor
startBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
//使用startActivityForResult()方法启动页面跳转,参数1:intent对象,参数二:请求码用于之后回调判断数据的来源
startActivityForResult(intent, );
}
});
}
//重写onActivityResult()得到返回的数据 参数1:请求码 参数2:返回数据时传入的结果 参数三:返回数据的intent
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//对requestCode进行选择
switch (requestCode) {
case :
if (resultCode == RESULT_OK) {
String str = data.getStringExtra("hello");
Log.e(TAG, "onActivityResult: " + str);
}
break;
default:
}
}
}
2.修改SecondActivity中的代码:重写onBackPressed方法,监听是否按了返回键
public class SecondActivity extends AppCompatActivity {
private static final String TAG = "SecondActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
}
//重写onBackPressed()在里面实现返回数据
@Override
public void onBackPressed() {
super.onBackPressed();
String str = "hello FirstActivity";
//创建Intent对象
Intent intent = new Intent();
intent.putExtra("hello",str);
//setResult()方法专门向上一个活动返回处理结果 参数1:处理结果一般为RESULT_OK或者RESULT_CALNCELED 参数2:带有数据的intent
setResult(RESULT_OK,intent);
finish();
}
}