使用Intent在活動之間穿梭
阿新 • • 發佈:2018-11-15
int 點擊事件 vertica version android ins http line lns
使用Intent在活動之間穿梭
1.在com.example.activitytest中創建第二個活動SecondActivity:
/** * 第二個活動 */ public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second_layout); } }
創建完成後會自動生成second_layout.xml,這裏我們進行修改如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/button_2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button 2" /> </LinearLayout>
這時AndroidManifest.xml已經幫我們註冊了活動:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.activitytest"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".FirstActivity" android:label="this is first"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SecondActivity"></activity> </application> </manifest>
2.使用Intent啟動活動
Intent是Android中各組件進行交互的一種重要方式,它不僅可以指明當前組件想要執行的動作,還可以在不同組件之間傳遞數據.
Intent大致可以分為兩種:顯示Intent和隱式Intent
一.顯式Intent
Intent中有多個構造函數的重載,其中一個Intent(Context packageContext,Class<?> cls),這個構造函數第一個參數是啟動活動的上下文,第二個啟動活動的目標.
//啟動第二個活動
public void onClick(View v) {
//FirstActivity.this 指上下文 SecondActivity.class指活動目標
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
}
二.隱式Intent
通過<activity>標簽下配置<intent-filter>的內容,可以指定當前活動能夠響應的action和category,
打開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>
修改FirstActivity中按鈕的點擊事件:
//隱式使用Intent
public void onClick(View v) {
Intent intent = new Intent("com.example.activitytest.ACTION_START");
startActivity(intent);
}
可以選擇添加多個category:
//隱式使用Intent
public void onClick(View v) {
Intent intent = new Intent("com.example.activitytest.ACTION_START");
intent.addCategory("com.example.activitytest.MY_CATEGORY");
startActivity(intent);
}
打開AndroidManifest.xml,添加如下代碼:
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.example.activitytest.MY_CATEGORY" />
</intent-filter>
</activity>
3.Intent的其他使用方法
跳轉第三方鏈接
//跳轉第三方鏈接
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://www.baidu.com"));
startActivity(intent);
}
調用撥號功能
//調用撥號功能
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
}
使用Intent在活動之間穿梭