標籤:font ports launcher map com one 參數 tar create
Intent是 Android中重要的橋樑之一,它分為顯式意圖和隱式意圖。接下來分別針對這兩種意圖進行講解。
- 顯式意圖:通過指定一組資料或動作,啟用應用內部的 activity;(相比隱式意圖,此做法更安全)
Intent intent = new Intent(); intent.setClass(MainActivity.this,Main2Activity.class); //第一個參數指的就是要跳轉的那個Activity;第二個指的是跳到的那個Activity startActivity(intent); //如果沒有回調的時候直接這樣就OK 或者Intent intent = new Intent(); intent.setClassName("com.sd.study.test_01","com.sd.study.test_02"); //第一個參數指的就是要跳轉的那個Activity的包名;第二個指的是跳到的那個Activity的包名 startActivity(intent);或者Intent intent = new Intent(this,Main2Activity.class);//第一個參數指的就是要跳轉的那個Activity;第二個指的是跳到的那個Activity startActivity(intent);
- 隱式意圖:通過指定具體的包名和類名,開啟另一個程式的 Activity。
//實現跳轉的功能Intent intent = new Intent();//設定跳轉的動作intent.setAction(" 資訊清單檔中目標activity的name ");//設定 categoryintent.addCategory(" 資訊清單檔中目標activity的category ");//開啟 Activity (如果需要加許可權記得加上)startActivity(intent); //實現撥打到電話的功能Intent intent = new Intent();//設定撥打的動作intent.setAction(" 資訊清單檔中目標activity的name");//設定撥打的資料intent.setData(Uri.parse("tel:"+119));//開啟 Activity (如果需要加許可權記得加上)startActivity(intent);
//資訊清單檔<application android:name=".MyApp" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Main2Activity"> // " 資訊清單檔中目標activity的name " // " 資訊清單檔中目標activity的category " </activity></application>
//第一個Activitypublic class MainActivity extends Activity { private Button btn ; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button)findViewById(R.id.button); //設定單擊事件 btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(mainActivity.this,main2Activity.class); //第一個參數指的就是要跳轉的那個Activity;第二個指的是跳到的那個Activity intent.putExtra("str1", "hello world"); intent.putExtra("str2", "你好,世界"); //如果沒有回調也不用重寫這個方法 startActivityForResult(intent, 1); } }); }}//第二個Activitypublic class Main2Activity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button)findViewById(R.id.button); Intent intent = this.getIntent(); Bundle bundle = intent.getExtras(); //根據"索引值對"取值 String str1 = bundle.getString("str1"); String str2 = bundle.getString("str2"); //按鈕的點擊事件 btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.putExtra("str3", "Back Data"); setResult(0, intent); //設定傳回值 finish(); //調用這個方法,此Activity關閉,並把它從棧中移除。然後進入到前一個Activity } }); } }
-
-
- putExtra(); //可以傳遞8種基礎資料型別 (Elementary Data Type);
-
-
- Bundle(); //可以傳遞8種基礎資料型別 (Elementary Data Type);
-
-
- a. 調用者Activity開啟新的介面選用 startActivityForResult();
startActivityForResult(intent, 1); //如果沒有回調則不用重寫這個方法
Intent intent = new Intent();intent.putExtras();setResult();//設定傳回值
-
-
- c. 操作關閉 finish();
- d. 在調用者Activity 中調用onActivityResult(); 方法
Android 之 Intent(意圖)