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

显式启动与隐式启动----子Activity传递数据到父Activity

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

显式启动与隐式启动----子Activity传递数据到父Activity

工具:Android studio、手机
1.手机连接AS
设置—>点击版本号五次---->打开USB调试—>USB连接电脑和手机
在AS里面看到AS运行的可选device里面出现自己的手机型号即可

运行项目时会在手机里安装相应的APP,选择同意安装即可


2.开始编写项目
最终效果:
一共有三个页面,分别为MainActivity、SubActivity1、SubActivity2,点击MainActivity的显示启动按钮跳转到SubActivity1,点击SubActivity返回按钮回到MainActivity并显示一个100以内的随机数,点击隐式启动按钮跳转到SubActivity2,点击返回回到MainActivity,并显示开发者名称。





代码部分:
MainActivity.java

```java
package com.example.hello;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private Button button1,button2;
    private TextView tv;

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode,resultCode,data);
        String str=data.getStringExtra("who");

        if(requestCode==1){
            if(resultCode==RESULT_OK)
            {
                Bundle random=data.getExtras();
                Toast.makeText(MainActivity.this,random.getInt("random")+"",Toast.LENGTH_LONG).show();

            }

        }
        if(resultCode==2){
            if(resultCode==2){
                Bundle builder=data.getExtras();

                Toast.makeText(MainActivity.this,builder.getString("builder")+"",Toast.LENGTH_LONG).show();

            }
        }

    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button1=(Button)findViewById(R.id.button1);
        button2=(Button)findViewById(R.id.button2);
        tv = (TextView) findViewById(R.id.textView3);
        //显式启动
        button1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                Intent intent1=new Intent(MainActivity.this,SubActivity1.class);
                startActivityForResult(intent1,1);
            }
        });
        //隐式启动
        button2.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                Intent intent2=new Intent();
                intent2.setAction(Intent.ACTION_VIEW);
                intent2.setData(Uri.parse("intentdemo://cn.edu.neusoft"));
                startActivityForResult(intent2,2);
            }
        });
    }
}



SubActivity1:

```java
package com.example.hello;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import java.util.Random;

public class SubActivity1 extends AppCompatActivity {





    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub1);

        Button btn=(Button)findViewById(R.id.button);
        btn.setonClickListener(new View.onClickListener() {
            @Override
            public void onClick(View view) {
                Random rand=new Random();
                int r=rand.nextInt(100);
                Bundle bundle=new Bundle();
                bundle.putInt("random",r);
                Intent intent3=new Intent();
                intent3.putExtras(bundle);
                setResult(RESULT_OK,intent3);
                finish();
            }
        });

    }
}

SubActivity2:

package com.example.hello;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class SubActivity2 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub2);
        Button btn3=(Button)findViewById(R.id.button3);
        btn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String s="开发者是:C²";
                Bundle bundle=new Bundle();
                bundle.putString("builder",s);
                Intent intent4=new Intent();
                intent4.putExtras(bundle);
                setResult(2,intent4);

                finish();
            }
        });
    }
}

注意:
在MainActivity的onCreate中,要把隐式启动的startActivity改为startActivityForResult,这样在调用子Activity时,父Activity才能区分是从哪个activity中发来的请求

Android studio在使用过程中遇到的问题:
在打开之前的项目出现多个.xml文件缺损的情况,新建项目也是如此导致不能正确编译运行,可以通过删除两个caches文件夹再重启AS即可。
解决办法的原文链接:https://stackoverflow.com/questions/53403502/strange-error-in-colors-xml-file-in-android-studio

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

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

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