1. 程式人生 > >activity顯隱跳轉及值傳遞

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介面的物件