AS中的隐式Intent

访问网页

button1.setOnClickListener(new View.OnClickListener() {
 @Override 
 public void onClick(View v) {
  Intent intent = new Intent(Intent.ACTION_VIEW); 
  intent.setData(Uri.parse("http://www.baidu.com")); 
  startActivity(intent); 
  } 
  })

只有data标签中指定的内容和Intent中携带的Data完全一致时,当前活动才能够响应该 Intent。不过一般在data 标签中都不会指定过多的内容,如上面浏览器示例中,其实只需要 指定android:scheme 为http,就可以响应所有的http协议的Intent了。

android:scheme
用于指定数据的协议部分,如上例中的http部分。
android:host
用于指定数据的主机名部分,如上例中的www.baidu.com部分。
android:port
用于指定数据的端口部分,一般紧随在主机名之后。
android:path
用于指定主机名和端口之后的部分,如一段网址中跟在域名之后的内 容。
android:mimeType
用于指定可以处理的数据类型,允许使用通配符的方式进行指 定。

打电话

button1.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
Intent intent = new Intent(Intent.ACTION_DIAL); 
intent.setData(Uri.parse("tel:10086")); 
startActivity(intent); 
}
 });

向下一个活动传输数据

传递字符串

button1.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) {
 String data = "Hello SecondActivity"; 
 Intent intent = new Intent(FirstActivity.this, SecondActivity.class); 
 intent.putExtra("extra_data", data); 
 startActivity(intent); 
 } 
 });

在被传递的活动SecondActivity中需要接受数据

public class SecondActivity extends AppCompatActivity {
 @Override
 protected void onCreate(Bundle savedInstanceState)
  { super.onCreate(savedInstanceState); 
  setContentView(R.layout.second_layout); 
  Intent intent = getIntent(); 
  String data = intent.getStringExtra("extra_data"); 
 Toast.makeText(SecondActivity.this,data,Toast.LENGTH_SHORT).show(); 
  } 
  }

通过静态方法makeText() 创建出一个Toast 对象,然后调用show() 将Toast显示出来就可以了。这里需要注意的是,makeText() 方法需要传入3个参数。第一个 参数是Context ,也就是Toast要求的上下文,由于活动本身就是一个Context 对象,因此这 里直接传入FirstActivity.this 即可。第二个参数是Toast显示的文本内容,第三个参数是 Toast显示的时长,有两个内置常量可以选择Toast.LENGTH_SHORT 和Toast.LENGTH_LONG 。

返回数据给上一个活动

在FirstActivity中通过点击button来调用另一个活动,因此在FirstActivity中写代码

button1.setOnClickListener(new View.OnClickListener() { 
@Override
 public void onClick(View v) { 
 Intent intent = new Intent(FirstActivity.this, SecondActivity.class); 
 startActivityForResult(intent, 1); 
 }
  });

这里使用startActivityForResult() 方法来启动SecondActivity;

那在SecondActivity中可以写

public class SecondActivity extends AppCompatActivity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.second_layout); 
Button button2 = (Button) findViewById(R.id.button_2); 
button2.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
Intent intent = new Intent(); 
intent.putExtra("data_return", "Hello FirstActivity"); setResult(RESULT_OK, intent); 
finish(); 
} 
}); 
} 
}

这里我们设置了一个Intent,但是这里的Intent我们仅是用来传递数据。

setResult() 方法接收两个参数,第 一个参数用于向上一个活动返回处理结果,一般只使用RESULT_OK 或RESULT_CANCELED 这 两个值,第二个参数则把带有数据的Intent传递回去。

finish()销毁活动2的时候,我们需要在FirstActivity中接受数据。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
switch (requestCode) { 
case 1: 
if (resultCode == RESULT_OK) { 
String returnedData = data.getStringExtra("data_return"); 
Toast.makeText(FirstActivity.this,returnedData,Toast.LENGTH_LONG).show(); }
break; 
default: } 
}

这里我们顺便复习一下前面的内容
我们使用getStringExtra接受数据,然后采用Toast的形式将接受的数据打印出来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值