android intent打开活动,Android 开发入门-使用 Intent 在活动之间穿梭

2.3.1 使用显式 Intent# app/src/main/res/layout/second_layout.xml

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/button_2"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="Button 2"

/>

# app/src/main/java/com/example/activitytest/SecondActivity.java

public class SecondActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.second_layout);

}

}# app/src/main/AndroidManifest.xml

package="com.example.activitytest">

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:supportsRtl="true"

android:theme="@style/AppTheme">

android:name=".FirstActivity" #注册的活动名称,可省略包名

android:label="This is FirstActivity"> #指定活动标题

#设为主活动

#设为启动器

android:name=".SecondActivity"> #注册第二个活动

public class FirstActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.first_layout);

Button button1 = (Button) findViewById(R.id.button_1);

button1.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

// 实例化 Intent,第一个参数为当前上下文,第二个参数为要启动的目标活动

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);

// 启动目标活动

startActivity(intent);

}

});

}

2.3.2 使用隐式 Intent

android:name=".SecondActivity">

# 指定当前活动相应的行为是 ACTION_START

# 指定当前活动相应的分类是 DEFAULT

public class FirstActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.first_layout);

Button button1 = (Button) findViewById(R.id.button_1);

button1.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

// 实例化 Intent,并设置行为是 ACTION_START,不设置分类则默认分类是 DEFAULT

Intent intent = new Intent("com.example.activitytest.ACTION_START");

startActivity(intent);

}

});

}

增加活动分类:

android:name=".SecondActivity">

# 指定当前活动相应的行为是 ACTION_START

# 指定当前活动相应的分类是 DEFAULT

# 指定当前活动相应的分类是 MY_CATEGORY

public class FirstActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.first_layout);

Button button1 = (Button) findViewById(R.id.button_1);

button1.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

// 实例化 Intent,并设置行为是 ACTION_START

Intent intent = new Intent("com.example.activitytest.ACTION_START");

// 为 Intent 设置分类是 MY_CATEGORY

intent.addCategory("com.example.activitytest.MY_CATEGORY");

startActivity(intent);

}

});

}

2.3.3 更多隐式 Intent 的用法button1.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

// 实例化 Intent,并设置行为是 ACTION_VIEW

Intent intent = new Intent(Intent.ACTION_VIEW);

// 设置 Intent 的 Uri

intent.setData(Uri.parse("https://www.baidu.com"));

// 启动活动,会打开系统浏览器访问设置的网址

startActivity(intent);

}

});<?xml version="1.0" encoding="utf-8"?>

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/button_3"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="Button 3"

/>

# 指定数据的协议部分是 http

调用系统拨号界面:button1.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent(Intent.ACTION_DIAL);

intent.setData(Uri.parse("tel:10086"));

startActivity(intent);

}

});

2.3.4 向下一个活动传递数据button1.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

String data = "Hello SecondActivity";

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);

// 暂存数据到 Intent 中

intent.putExtra("extra_data", data);

startActivity(intent);

}

});public class SecondActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.second_layout);

Intent intent = getIntent();

// 从 Intent 中取出数据

String data = intent.getStringExtra("extra_data");

Log.d("SecondActivity", data);

}

2.3.5 返回数据给上一个活动@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.first_layout);

Button button1 = (Button) findViewById(R.id.button_1);

button1.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);

// 启动活动,并接受活动销毁时返回的数据,第二个参数为请求码,用于判断数据的来源

startActivityForResult(intent, 1);

}

});

}

// 下一个活动被销毁时的回调函数

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

// 判断数据来源

switch (requestCode) {

case 1:

if (resultCode == RESULT_OK) {

String returnedData = data.getStringExtra("data_return");

Log.d("FirstActivity", returnedData);

}

break;

default:

}

}public class SecondActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

Log.d("SecondActivity", "Task id is " + getTaskId());

setContentView(R.layout.second_layout);

Button button2 = (Button) findViewById(R.id.button_2);

button2.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent();

// 暂存数据到 Intent 中

intent.putExtra("data_return", "Hello FirstActivity");

// 向上一个活动返回数据,第一个参数一般为 RESULT_OK

setResult(RESULT_OK, intent);

// 销毁当前活动

finish();

}

});

}

// 绑定按下返回键时的逻辑,与按钮点击的逻辑一致

@Override

public void onBackPressed() {

Intent intent = new Intent();

intent.putExtra("data_return", "Hello FirstActivity");

setResult(RESULT_OK, intent);

finish();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值