首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个Activity向另外一个Activity传递值的方法

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

作者头像
Aidol
发布2020-07-23 16:48:56
6950
发布2020-07-23 16:48:56
举报
文章被收录于专栏:苦旅苦旅苦旅
一:使用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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二:通过Intent结合Bundle来传递数据
  • 三:利用Intent实现下一活动向上一活动传值
  • 四:结果演示
    • 一 、二的结果:
      • 三的结果:
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档