zoukankan      html  css  js  c++  java
  • Android Intent意图(一):基本使用

    Intent(意图)主要是解决Android应用的各项组件之间的通讯。

    对于intent主要的分类主要包括隐式意图和显式意图。显式意图通常主要是启动本应用中的Activity之间的数据,而隐式意图则常见于启动系统中的某些特定的动作,比如打电话,或者是跨应用的Activity启动。
    通常来说:
    显式意图:调用Intent.setComponent()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。
    隐式意图:没有明确指定组件名的Intent为隐式意图。 Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。

    一、显示意图: 数据传递、跳转Activity、跳转ThirdApk

    1.1 Send

    AndroidManifest.xml  注册SecondActivity

            <activity
                android:name=".SecondActivity"
                android:label="SecondActivity">
    
            </activity>

    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical">
    
        <Button
            android:id="@+id/btn1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="btn1"
            android:textSize="32sp" />
    
        <Button
            android:id="@+id/btn2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="btn2->senddata"
            android:textSize="32sp" />
    
        <Button
            android:id="@+id/btn3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="btn3"
            android:textSize="32sp" />
    
        <Button
            android:id="@+id/btn4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="btn4"
            android:textSize="32sp" />
    </LinearLayout>

    MainActivity.java

    package com.gatsby.send;
    
    import android.content.ComponentName;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
        Button btn1, btn2, btn3, btn4;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            initView();
        }
    
        public void initView() {
    
            btn1 = (Button) findViewById(R.id.btn1);
            btn2 = (Button) findViewById(R.id.btn2);
            btn3 = (Button) findViewById(R.id.btn3);
    
            btn1.setOnClickListener(this);
            btn2.setOnClickListener(this);
            btn3.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
    
            switch (v.getId()) {
                case R.id.btn1:
                    //显示意图  跳转Activity
                    startActivity(new Intent(MainActivity.this, SecondActivity.class));
                    break;
                case R.id.btn2:
                    //显示意图  跳转第三方应用  Intent传递数据
                    Intent intent2 = new Intent();
                    intent2.setClassName("com.gatsby.recevier", "com.gatsby.recevier.MainActivity");
                    intent2.putExtra("name", "路明非");
                    intent2.putExtra("age", 25);
                    intent2.putExtra("fight", 800.65);
                    startActivity(intent2);
                    break;
                case R.id.btn3:
                    //显示意图   跳转第三方应用  ComponentName
                    Intent intent3 = new Intent();
                    ComponentName componentName = new ComponentName("com.gatsby.recevier", "com.gatsby.recevier.MainActivity");
                    intent3.setComponent(componentName);
                    startActivity(intent3);
            }
        }
    
    
    }

    1.2 Recevier

    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical">
    
        <TextView
            android:id="@+id/tv1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="thirdApk"
            android:textSize="64sp" />
    
    </LinearLayout>

    MainActivity.java

    package com.gatsby.recevier;
    
    import android.content.Intent;
    import android.os.Bundle;
    import android.widget.TextView;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    public class MainActivity extends AppCompatActivity {
    
        TextView tv1;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            initView();
            showTextView();
        }
    
        public void initView(){
            tv1 =  (TextView)findViewById(R.id.tv1);
        }
        public void  showTextView(){
    
            Intent intent = getIntent();
            String name = intent.getStringExtra("name");
            int age = intent.getIntExtra("age", 18);
            double fight = intent.getDoubleExtra("fight", 0.0);
    
            tv1.setText("name:" + name + " ,age:" + age + " ,fight:" + fight);
        }
    
    }
  • 相关阅读:
    .Net core 下Swagger如何隐藏接口的显示
    .Net core 使用SSH.Net上传到SFTP服务器和和下载文件
    centos7 安装mysql5.7以及一些细节问题
    linux安装完jenkins无法访问的问题
    C# 对象的深复制和浅复制
    .Net core 还原Nuget包失败的解决方法
    Vuejs(14)——在v-for中,利用index来对第一项添加class
    Vuejs——(13)组件——杂项
    Vuejs——(12)组件——动态组件
    Vuejs——(11)组件——slot内容分发
  • 原文地址:https://www.cnblogs.com/crushgirl/p/12932624.html
Copyright © 2011-2022 走看看