Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android 之 Intent(意圖),androidintent意圖

Android 之 Intent(意圖),androidintent意圖

編輯:關於android開發

Android 之 Intent(意圖),androidintent意圖


   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 ");
//設置 category
intent.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數據傳遞與回傳
//第一個Activity
public 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);  
            }  
        });  
    }
}


//第二個Activity
public 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種基本數據類型;
      • Bundle(); //可以傳遞8種基本數據類型;
    • 回傳數據  
      • a. 調用者Activity開啟新的界面選用  startActivityForResult();
startActivityForResult(intent, 1); //如果沒有回調則不用重寫這個方法
      • b. 在新開啟的Activity中設置返回值    
Intent intent = new Intent();
intent.putExtras();
setResult();//設置返回值
      • c. 操作關閉  finish();    
      • d. 在調用者Activity 中調用onActivityResult(); 方法    
   

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved