Activity入门1

activity跳转

显式跳转

 

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

显式跳转的特点是,intent中包含要跳转过去的组件的.class。

通常用于app内部的跳转。

隐式跳转

Intent intent = new Intent();
        intent.setAction("com.example.Login");
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        startActivity(intent);

隐式跳转的特点是,intent内并未制定要跳转过去的组件,而是通过设定action和category来由系统判断跳转的位置。

<activity android:name=".ThirdActivity">
            <intent-filter>
                <action android:name="com.example.Login"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>

 在manifest文件中,可以为某个活动配置特定的action和category,来实现跳转到该活动。需要注意,只有action和category都匹配上才能正确识别。

action是必须要赋值的,category如果不填写的话会自动填充一个默认值。

Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(Uri.parse("http://baidu.com"));
        startActivity(intent);

通过以上代码可以跳转到默认浏览器。可见隐式跳转常用于app外部的跳转。 

跳转时传数据

向下一个activity传数据

 Intent intent = new Intent();
        intent.setAction("com.example.Login");
        intent.putExtra("account", accountText);
        intent.putExtra("password", passwordText);
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        startActivity(intent);

intent里面有一个bundle成员变量,我们向里面设置数据即可。 

向上一个activity传数据

活动a跳转到活动b,且活动a需要接收活动b返回时传的数据,a和b都要做以下改进:

活动a:

Intent intent = new Intent(this, SecondActivity.class);
        intent.putExtra("account", accountText);
        intent.putExtra("password", passwordText);
        startActivityForResult(intent, 111);


@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);
        switch (requestCode) {
            case 111:
                if (resultCode == RESULT_OK) {
                    String response = intent.getStringExtra("back");
                    Toast.makeText(this, response, Toast.LENGTH_SHORT).show();
                }
                break;
            default:
        }
    }

活动b:

@Override
    public void onBackPressed() {
        backAndSendMessage();
    }

    private void backAndSendMessage() {
        Intent intent = new Intent();
        intent.putExtra("back", "back to main activity!");
        setResult(RESULT_OK, intent);
        finish();
    }

在代码中111是活动a传入的请求码,活动b返回后的请求码就是该值。

活动b返回后将数据赋值到intent里,随后活动a会调用onActivityResult方法。首先通过请求码判断数据来自于活动b,再根据intent里的响应码判断逻辑分类,最后从intent的bundle里取出数据。

相关推荐

  1. Activity入门1

    2024-04-01 01:00:02       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-01 01:00:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-01 01:00:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-01 01:00:02       87 阅读
  4. Python语言-面向对象

    2024-04-01 01:00:02       96 阅读

热门阅读

  1. 【c++20】CPP-20-STL-Cookbook 学习笔记

    2024-04-01 01:00:02       40 阅读
  2. Leetcode 3100. Water Bottles II

    2024-04-01 01:00:02       35 阅读
  3. 什么是数据仓库

    2024-04-01 01:00:02       41 阅读
  4. 随机规划:求解报童问题期望值模型的算法方案

    2024-04-01 01:00:02       34 阅读
  5. 云资源调度和管理系统

    2024-04-01 01:00:02       32 阅读
  6. 日本出国留学一年费用大概多少钱

    2024-04-01 01:00:02       38 阅读
  7. ###用sh ``` 用sh ``json失败

    2024-04-01 01:00:02       46 阅读