专栏首页苦旅一个Activity向另外一个Activity传递值的方法

一个Activity向另外一个Activity传递值的方法

一:使用Intent来向下一活动传值

1.关键代码 假如FirstActivity要向SecondActivity传递值

//FristActivity
String data = "Hello SecondActivity";
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra("maple",data);//第一个参数是键值,第二个参数是被传递的值
startActivity(intent);
//SecondActivity
Intent intent = getIntent();
String data = intent.getStringExtra("maple");

2.具体实现代码 1)FirstActivity:

public class FirstActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_layout);
        Button button1 = (Button)findViewById(R.id.button_1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(FirstActivity.this,"You clicked Button 1",Toast.LENGTH_SHORT).show();
                String data = "Hello SecondActivity!";
                Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
                intent.putExtra("maple",data);
                startActivity(intent);

                //finish();
            }
        });
        button1.setText("走你");

    }
}

2)SecondActivity:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Button button2 = (Button)findViewById(R.id.button_2);
        Intent intent = getIntent();
        String data = intent.getStringExtra("maple");
        Toast.makeText(this,data,Toast.LENGTH_SHORT).show();
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               finish();
            }
        });
    }
}

二:通过Intent结合Bundle来传递数据

1.关键代码 假如FirstActivity要向SecondActivity传递值

Intent intent = new Intent();
Bundle bundle = new Bundle();
intent.setClass(FirstActivity.this,SecondActivity.class);
String data = "Hello SecondActivity";
bundle.putString("maple",data)//第一个参数是键值,第二个参数是待传递的内容
intent.putExtras(bundle);//把bundle与intent绑定
startActivity(intent);
//SecondActivity
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String data = bundle.getString("maple");

2.完整代码 1)FirstActivity:

import android.content.Intent;
import android.content.UriMatcher;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class FirstActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_layout);
        Button button1 = (Button)findViewById(R.id.button_1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(FirstActivity.this,"You clicked Button 1",Toast.LENGTH_SHORT).show();
                
                String data = "Hello SecondActivity!";
                Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
                Bundle bundle = new Bundle();
                bundle.putString("maple",data);
                intent.putExtras(bundle);
                startActivity(intent);
            }
        });
        button1.setText("走你");

    }

2)SecondActivity:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Button button2 = (Button)findViewById(R.id.button_2);
        Intent intent = getIntent();
        Bundle bundle = intent.getExtras();
        String data = bundle.getString("maple");
        Toast.makeText(this,data,Toast.LENGTH_SHORT).show();
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               finish();
            }
        });
    }
}

三:利用Intent实现下一活动向上一活动传值

Activity中有一个startActivityForResult()方法,这个方法期望在活动销毁的时候能够返回一个结果给上一活动。 1.关键代码:

//FirstActivity
//1)
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivityForResult(intent,1);/*第一个参数是Intent的实例,第二个参数是requestCode。
requestCode和resultCode一起配合用来验证是不是我们所需要的那个活动传回来的值。resultCode在onActivityResult(int requestCode, int resultCode, Intent data)方法中出现。*/
//2)重新覆写方法onActivityResult()
 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode){
            case 1:
                if(resultCode == RESULT_OK){
                    String returnedData = data.getStringExtra("maple");
                    Toast.makeText(this,returnedData,Toast.LENGTH_SHORT).show();
                }
                break;
            default:
        }
    }
//SecondActivity
Intent intent = new Intent();
String data = "Hello FirstActivit";
intent.putExtra("maple",data);
setResult(RESULT_OK,intent);//第一个参数是requestCode,第二个是用来传值的intent的实例

2.完整代码 1)FirstActivity

public class FirstActivity extends AppCompatActivity {


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode){
            case 1:
                if(resultCode == RESULT_OK){
                    String returnedData = data.getStringExtra("maple");
                    Toast.makeText(this,returnedData,Toast.LENGTH_SHORT).show();
                }
                break;
            default:
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_layout);
        Button button1 = (Button)findViewById(R.id.button_1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(FirstActivity.this,"You clicked Button 1",Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
                startActivityForResult(intent,1);
            }
        });
        button1.setText("走你");

    }

2)SecondActivity

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Button button2 = (Button)findViewById(R.id.button_2);
        Intent intent = new Intent();//只用来携带被传递的值,不跳转活动
        String data = "Hello FirstActivity";
        intent.putExtra("maple",data);
        setResult(RESULT_OK,intent);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               finish();
            }
        });
    }
}

四:结果演示

一 、二的结果:

image.png

image.png

三的结果:

image.png

image.png

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 分别用逻辑回归和决策树实现鸢尾花数据集分类

    Aidol
  • 利用Python进行远程关电脑

    Aidol
  • 安卓计算器

    Aidol
  • Android开发笔记(十五)淡入淡出动画TransitionDrawable

    说到淡入淡出动画,可能大家会想到补间动画里面的AlphaAnimation,不过这个深浅动画只能对透明度做渐变效果,也就是只...

    用户4464237
  • python 热力图heatmap

    py3study
  • c#知识点2.0 语句

    主要说一下我认为比较重要的东西。 foreach循环 格式: foreach(类型 循环变量 in 变量的取值集合) 变量值集合类型必须是一个集合,而循环变...

    东风冷雪
  • MySQL连接池

    Linux
  • 部署Amoeba3.X实现Mysql读写

       Amoeba for Mysql软件,致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当SQL路由功能,专注于分布式数据库...

    py3study
  • [android] WebView与Js交互

    调用WebView对象的getSettings()方法,获取WebSettings对象

    陶士涵
  • 一个SingleTask与跳转传值引发的血案

    后来想到,Activity A使用了SingleTask的launchMode,猜想可能跟这个有关,在执行界面跳转的时候,不会生成新的Activity A实例,...

    代码咖啡

扫码关注云+社区

领取腾讯云代金券