activity显隐跳转及值传递

1.1Activity跳转

//拨打电话(隐式启动)
    public void click(View view){   
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_CALL);
        Uri data=Uri.parse("tel:"+"110");
        intent.setData(data);
        startActivity(intent);
    }
    //打开网页/隐式启动
    public void click2(View view){      
        Intent intent = new Intent();       
        intent.setAction(intent.ACTION_VIEW);
        Uri data = Uri.parse("http://"+"www.baidu.com");
        intent.setData(data );
        startActivity(intent);      
    }
    //隐式启动ScondActivity
    public void click3(View view){      
        Intent intent = new Intent();
        intent.setAction("a.b.c");
        Uri data = Uri.parse("hehe:"+"你好啊");
        intent.setDataAndType(data, "text/text");
        startActivity(intent);      
    }
    //隐士启动拨号器
    public void click4(View view){      
        Intent intent = new Intent();
        intent.setAction(intent.ACTION_DIAL);
        Uri data=Uri.parse("tel:"+"110");
        intent.setData(data);
        startActivity(intent);      
    }   
    //显示启动ScondActivity
    public void click5(View view){      
        Intent intent = new Intent();
        intent.setClass(this, SecondActivity.class);    
        intent.putExtra("三国", "曹操");
        startActivity(intent);      
    }
    //显示启动拨号器
    public void click6(View view){
        //01-14 10:13:00.929: I/ActivityManager(384): 
        //Displayed com.android.contacts/.activities.DialtactsActivity: +388ms
        Intent intent = new Intent();
        intent.setClassName("com.android.contacts", "com.android.contacts.DialtactsActivity");
        startActivity(intent);      
    }
    //打开网页/显式启动
    public void click7(View view){      
        //01-14 10:27:46.329: I/ActivityManager(384): 
        //Displayed com.android.browser/.BrowserActivity: +295ms
        Intent intent = new Intent();
        intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
        startActivity(intent);      
    }

    <manifest
        <application
            <activity 
                android:name=".SecondActivity"
                android:label="我是SecondActivity"
                >
                    <intent-filter>
                        <action android:name="a.b.c" />
                        <data android:scheme="hehe"/>
                        <data android:mimeType="text/text"/>
                        <category android:name="android.intent.category.DEFAULT" />
                    </intent-filter>            
            </activity>
        </application>  
    </manifest>

1.2获取打开的Activity销毁前设置的数据-startActivityForResult

1.当前类

Intent intent = new Intent(mContext, CarTypeActivity.class);
        //startActivityForResult(android.content.Intent intent, int requestCode)
        startActivityForResult(intent, 1);
     @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            switch (requestCode) {
                case 1:
                    if (resultCode == 1) {
                        mCarModelId = data.getExtras().getInt("carModelId");
                        String carModelName = data.getExtras().getString("carModelName");
                        mTvJoinType.setText(carModelName + "");
                    }
                    break;
                default:
                    break;
            }
        }

2.CarTypeActivity类

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                CarTypeBean.DataBean dataBean = mList.get(position);
                Intent intent = new Intent();
                intent.putExtra("carModelId", dataBean.getId());
                intent.putExtra("carModelName", dataBean.getBrand() +" "+ dataBean.getModel());
                //setResult (int resultCode, Intent data)
                setResult(1, intent);
                finish();
            }
        });

2.1 隐式跳转

  1. 定义:通过intent-filter中的action进行的跳转就是隐式跳转。
  2. 特定
    1. 如果一个Activity有多个intent-filter,那么我们只需要匹配上一个,就可以将其启动起来。
    2. 如果category为DEFAULT,那么可以不用管。
    3. 如果一个intent-filter有多个category,那么匹配一个即可。
    4. 如果intent-filter有多个data标签,那么匹配一个即可。
    5. 如果自定义Intent-filter,Action可以自定义,但是category必须使用系统提供的
    6. 如果intent-filet既有scheme又有mimeType,那么在设置数据的时候就必须同时指定scheme和type,使用的API是intent.setDataAndType(Uri,Type);
    7. 一般用于不同app之间的调用
  3. 获取数据
    Intent intent = getIntent();
    Uri data = intent.getData();

2.2 显示跳转

  1. 定义:通过字节码或者要跳转的Activity的全类名进行跳转。
  2. 显示跳转获取数据
    1. 传递数据
      1. intent.putExtra(key,value);
    2. 获取数据
      1. intent.getStringExtra(key);
      2. 2.

2.3 Intent可以携带的数据种类

1. 8种基本数据类型和String以及他们的数组形式
2. 实现了Parcelable(序列化对象的接口,类似Serializable)接口的对象
3. 实现了Serializable接口的对象

猜你喜欢

转载自blog.csdn.net/AliEnCheng/article/details/78451291