Android 之 Intent(意圖)

來源:互聯網
上載者:User

標籤: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>

  • Android資料傳遞與回傳
//第一個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); //如果沒有回調則不用重寫這個方法
      • b. 在新開啟的Activity中設定傳回值    
Intent intent = new Intent();intent.putExtras();setResult();//設定傳回值
      • c. 操作關閉  finish();    
      • d. 在調用者Activity 中調用onActivityResult(); 方法    
  

Android 之 Intent(意圖)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.