【Android】Intent的用法

正文索引 [隐藏]

Android的Intent有四种发法
Activity的跳转------Intent的用法
1. 显示Intent的用法
2. 隐式Intent的用法
3. 传递数据的用法
4. 返回数据的用法

显示Intent

在第二个layout里面放一个按钮显示返回
在第一个layout里面放一个按钮跳转到第二个layout

这个是页面跳转逻辑

public void onclikopen(View view) {
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
//第一个参数是上下文,就是当前的activity.第二个参数是需要跳转的activity
startActivity(intent);
}

下面这个是返回逻辑

public void onclikback(View view) {
finish();
}

隐式Inten

这里是在AndroidManfest.xml里面修改
1
然后

public void yinshi(View view){
Intent intent = new Intent("com.example.onetransftwo.SecondActivity");//这里跟AndroidManifest的name一样
startActivity(intent);
}

下面这串代码是跳转到打电话界面

public void yinshi(View view){
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
}

传递数据

接下来我们写上一个界面怎么向下一个界面传递数据

public void onclikopen(View view) {
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("dearname","小瑞瑞");
startActivity(intent);
}

然后再去下一个界面拿到这个数据
Intent intent = getIntent();
String str = intent.getStringExtra("dearname");
Log.i(TAG, "小可爱的名字是"+str);

如果再继续把数据传递回来呢,第一个界面的代码就不能这样写
这样写即可

public void onclikopen(View view) {
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("dearname","小瑞瑞");
//startActivity(intent);
startActivityForResult(intent,1);
}

返回数据

然后在第二个界面修改返回第一个界面的逻辑,传递回去

public void onclikback(View view) { //这个是返回按钮
Intent intent = new Intent();
intent.putExtra("cutegirl","小小可爱");
setResult(RESULT_OK,intent);
finish();
}

然后再第一个界面改写onActivityResult()函数
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if(requestCode == 1 && resultCode == RESULT_OK)
{
String str = data.getStringExtra("cutegirl");
Log.i(TAG, str);
}
super.onActivityResult(requestCode,resultCode,data);
}

但是发现如果使用手机自带的返回键返回的话,就不会带数据,这怎么解决呢,我们需要在第二个界面改写函数
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("cutegirl","小小可爱");
setResult(RESULT_OK,intent);
super.onBackPressed();
}

1