Android - Intent基礎

我是iOS 轉Android 的,做一些自己的學習記錄.

Intent

Intent 有很多的作用,由于初次嘗試Android,暫時知道Intent可以用于界面之前的切換就ok了。

顯示Intent

//初始化Intent, 表示從FirstActivity 到 SecondActivity
Intent intent = new Intent(FirstActivity.this,SecondActivity.class); 
//執行 intent實例
startActivity(intent); //若要返回上一個類,可點擊右上角back。或者手動代碼 finish();銷毀當前activity

隱式Intent

//在AndroidManifest.xml中添加
<activity android:name = ".SecondActivity">
    <intent - filter>
        <action android:name="com.example.activitytest.ACTION_START" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent - filter>
</activity>
//當action 和 category同時匹配成功才能啟動下一個activity,這里能調用時因為有android.intent.category.DEFAULT默認category
Intent intent = new Intent("com.example.activitytest.ACTION_START");
//這樣調用category需要在AndroidManifest.xml中添加 <category android:name="android.intent.category.My_CATEGORY" />
//Intent.addCategory("com.example.activitytest.My_CATEGORY");
startActivity(intent);
調用系統瀏覽器
//intent的action是Intent.ACTION_VIEW
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);

新建一個ThirdActivity

        <activity android:name=".ThridActivity">
            <intent-filter>
                <action android:name="android.intent.action.VIEW"></action>
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="http"/> 
                //intent 響應data 標簽中滿足http協議的activity,這樣執行上面調用瀏覽器intent 就會出現選擇列表
            </intent-filter>
        </activity>
打電話
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);

向下一個activity傳遞數據

//FirstActivity 
String data = "Hello SecondActivity";
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra("extra_data",data);//extra_data 是鍵,data是要傳遞的值,這里data是字符串
startActivity(intent);
//SecondActivity中獲取值
Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");//獲取傳過來的值
Log.v("SecondActivity",data);//打印

返回數據給上一個活動

//FirstActivity
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(intent,1);
//SecondActivity
Intent intent = new Intent();
intent.putExtra("data_return","Hello First");//putExtra(鍵,值)
setResult(RESULT_OK,intent);
finish();
//FirstActivity 重寫onActivityResult 來接收數據
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case 1:
                if (resultCode == RESULT_OK) {
                    String returnData = data.getStringExtra("data_return");
                    Log.v("FirstActivity", returnData);
                }
        }
    }
//SecondActivity 通過back鍵回到FirstActivity
    @Override
    public void onBackPressed() {
        super.onBackPressed();
        Intent intent = new Intent();
        intent.putExtra("data_return","Hello First");
        setResult(RESULT_OK,intent);
        finish();
    }
//通過左上actionBar 返回按鈕
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == android.R.id.home) {       
        }
        return super.onOptionsItemSelected(item);
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。