Intent对象

Android四核心activity,service,broadcast receiver和content provider。除了content provider之外,彼此的通信都要使用Intent对象来进行。

Intent对象描述了要执行的结果是什么,基本内容可以氛围:componentName组件名称,action动作名称,data数据,category类别,extra返家数据和flag标志位6个部分。

所谓的显示intent就是我们常用的Intent.setclass(xxx.this,xxx.class),也就是指定componentName组件名称。

相对的隐式调用就是没有明确指出目标组件名称的情况。

指定action的动作名称

                        Uri uri = Uri.parse("http://www.baidu.com");
                        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                        MainActivity.this.startActivity(intent);

传递Extra字符串,使用startActivityForResult

重写方法:

   @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == 100) {
            Toast.makeText(MainActivity.this, data.getStringExtra("data"), Toast.LENGTH_SHORT).show();
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

 启动跳转

        findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, Secend.class);
                startActivityForResult(intent, 100);
            }
        });

Secend.class

  findViewById(R.id.secend_bt).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str = "secend activity msg";
                Intent intent = new Intent();
                intent.putExtra("data", str);
                Secend.this.setResult(RESULT_OK, intent);
                Secend.this.finish();
            }
        });

startActivityForResult方法,与startActivity类似。

不同点为:startActivity仅仅跳转目标界面,而startActivityForResult跳转的界面,如果调用了finish(),还会自动跳转回来。

原文地址:https://www.cnblogs.com/lyxin/p/5799809.html