栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

[Android] Intent启动activity方式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[Android] Intent启动activity方式

在Android系统中,应用程序一般都有多个Activity,Intent可以实现不同Activity之间的切换和数据传递,Intent启动Activity方式:显式启动和隐式启动。

显式启动:
按名称(完全限定类名)指定要启动的组件。 通常,会在自己的应用中使用显式Intent来启动组件,这是因为知道要启动的Activity或服务的类名。
创建显式Intent启动Activity或服务时,系统将立即启动Intent对象中指定的应用组件。

隐式Intent :
不指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理它。

  • Android系统根据Intent的动作和数据来决定启动哪一个Activity
  • 在隐式启动时,Intent中只包含需要执行的动作和所包含的数据,而无需指明具体启动哪一个Activity,选择权由Android系统和最终用户来决定
1.运行图 界面:

显式启动:


隐式启动:


打开子活动:


确认按钮:

取消按钮:

2.代码 (1)activity_main.xml



    

    
(2)MainActivtiy.java
package com.example.activity;

import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
    private EditText myinfo = null;
    private ActivityResultLauncher activityResultLauncher;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myinfo = findViewById(R.id.info);
        activityResultLauncher = registerForActivityResult
                (new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback() {
                    @Override
                    public void onActivityResult(ActivityResult result) {
                        if (result.getData() != null) {//没有请求码,单一处理
                            if (result.getResultCode() == RESULT_OK) {
                                String temp = result.getData().getStringExtra("reva");
                                myinfo.setText(temp);
                            } else {
                                myinfo.setText("对方没有返回值");
                            }
                        }
                    }
                });

    }

    public void explit(View view) {
//        Intent intent=new Intent(MainActivity.this,SecondActivity.class);
//        intent.putExtra("value",myinfo.getText().toString());
//        startActivity(intent);
        SecondActivity.activityStart(MainActivity.this, myinfo.getText().toString());
    }

    public void implit(View view) {
        Intent intent = new Intent(Intent.ACTION_VIEW,
                Uri.parse(myinfo.getText().toString()));
        startActivity(intent);
    }

    public void implit1(View view) {
        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
        intent.putExtra("value", myinfo.getText().toString());
        startActivityForResult(intent, 1);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
            case 1:
                if (resultCode == RESULT_OK) {
                    String temp = data.getStringExtra("reva");
                    myinfo.setText(temp);
                } else {
                    myinfo.setText("对方没有返回值");
                }
                break;
        }
    }

    public void implit2(View view) {
        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
        intent.putExtra("value", myinfo.getText().toString());
        activityResultLauncher.launch(intent);
    }

}
(3)activity_second.xml


    
        
        

    
    
        
        
    
    
        
(4)SecondActivity.java
package com.example.activity;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class SecondActivity extends AppCompatActivity {
    private TextView myview=null;
    private EditText myedit=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        myview=findViewById(R.id.receiveinfo);
        myedit=findViewById(R.id.returninfo);

        Intent intent=getIntent();
        String temp=intent.getStringExtra("value");
        myview.setText(temp);
    }

    public static void activityStart(Context context,String data){
        Intent intent=new Intent(context,SecondActivity.class);
        intent.putExtra("value",data);
        context.startActivity(intent);
    }

    public void ok(View view) {
        String temp=myedit.getText().toString();
        Intent intent=new Intent();
        intent.putExtra("reva",temp);
        setResult(RESULT_OK,intent);//设置返回值
        finish();
    }

    public void cancel(View view) {
        Intent intent=new Intent();
        setResult(RESULT_CANCELED,intent);
        finish();
    }
}

增加一个新的活动SecondAcitivity,也能打开网页,则在AndroidManifest.xml如下图设置:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/863219.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号