• Android的intent


    title: Android基础01
    date: 2020-02-15 17:17:04
    tags:
    

    1、Intent

    Intent可以让活动进行跳转。使用方式有两种,一种是显式,另一种是隐式。

    1、显示调用

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

    我们首先构建出了一个Intent,传入FirstActivity.this 作为上下文,传入SecondActivity.class 作为目标活动,这样我们的“意图”就非常明显了,即在FirstActivity这个活动的基础上打开SecondActivity这个活动。然后通过startActivity() 方法来执行这个Intent。

    2、隐式调用

    相比于显式Intent,隐式Intent则含蓄了许多,它并不明确指出我们想要启动哪一个活动,而是指定了一系列更为抽象的action 和category 等信息,然后交由系统去分析这个Intent,并帮我们找出合适的活动去启动。

    通过在<activity> 标签下配置<intent-filter> 的内容,可以指定当前活动能够响应的action 和category

    <activity android:name=".SecondActivity" > <intent-filter> <action android:name="com.example.activitytest.ACTION_START" /> <category android:name="android.intent.category.DEFAULT" />
    </intent-filter> </activity>

    <action> 标签中我们指明了当前活动可以响应

    com.example.activitytest.ACTION_START 这个action ,而<category> 标签则包含

    了一些附加信息,更精确地指明了当前的活动能够响应的Intent中还可能带有的category 。只

    <action><category> 中的内容同时能够匹配上Intent中指定的action 和category

    时,这个活动才能响应该Intent。

    3、intent返回给上一个活动数据

    启动活动时:

    button1.setOnClickListener(new View.OnClickListener() { 
    @Override public void onClick(View v) {
    Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
    startActivityForResult(intent, 1);
    }
    });
    这里我们使用了startActivityForResult() 方法来启动SecondActivity,请求码只要是一

    个唯一值就可以了,这里传入了1。

    接下来是第二个活动的返回数据:

    public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
        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.putExtra("data_return", "Hello FirstActivity"); 
                setResult(RESULT_OK, intent); 
                finish(); 
            } 
        }); 
    } 
    }

    由于我们是使用startActivityForResult() 方法来启动SecondActivity的,在

    SecondActivity被销毁之后会回调上一个活动的onActivityResult() 方法,因此我们需要在

    FirstActivity中重写这个方法来得到返回的数据,如下所示:

    @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: }
    }

    如果用户是按返回键退出的该活动,那么只需要将第二个活动中的intent代码写到第二个活动的onBackPressed()方法中即可。

  • 相关阅读:
    Java实现批量下载《神秘的程序员》漫画
    mysql远程连接:ERROR 1130 (HY000): Host '*.*.*.*' is not allowed to connect to this MySQL server解决办法
    opencv学习_15 (利用cmake查看opencv的源码)
    jobs 命令
    中断子系统6_中断嵌套处理
    JPA一对多映射
    JPA Map映射
    JPA集合映射
    JPA删除实体
    JPA查找实体
  • 原文地址:https://www.cnblogs.com/wuren-best/p/12313048.html
Copyright © 2020-2023  润新知