使用Intent进行数据的传递讲解与实例

如何使用Intent传递数据给下一个活动呢:

其实很简单,在我们跳转页面的时候,只要使用putExtra()方法将数据暂存到Intent中,然后在跳转后的活动中,使用getxxx()方法获得数据就可以了

实例展现:

效果展现:


这里写图片描述

效果分析:可以看到打印出了helloSecondActivity

实现代码

1.修改FirstActivity中的代码
public class FirstActivity extends AppCompatActivity {

    //创建按钮对象   create button object
    private Button startBtn;

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

        //绑定id    bind id
        startBtn = findViewById(R.id.first_btn);
        //设置监听   set monitor
        startBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //创建将要传递的数据 create will transmit values
                String str = "hello SecondAcitity";
                Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
                //数据通过putExtra()以键值对形式传递数据  use putExtra() by key-value transmit values
                intent.putExtra("hello",str);
                startActivity(intent);

            }
        });
    }
}
修改SecondActivity中的代码
public class SecondActivity extends AppCompatActivity {

    private static final String TAG = "SecondActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_layout);
        //通过getIntent()方法获得启动获得的Intent  use getIntent() get intet object
        Intent intent = getIntent();
        //通过getStringExtra()获得数据  use getStringExtra() get values
        String str = intent.getStringExtra("hello");
        //打印数据 print values
        Log.e(TAG, "onCreate: "+str );

    }
}

over

如何使用Intent返回数据给上一个活动:

效果展现:AS出现了点问题,以后截图

具体代码:

1.修改FirstActivity中的代码:

public class FirstActivity extends AppCompatActivity {

    //创建按钮对象   create button object
    private Button startBtn;
    private static final String TAG = "FirstActivity";

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

        //绑定id    bind id
        startBtn = findViewById(R.id.first_btn);
        //设置监听   set monitor
        startBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
                //使用startActivityForResult()方法启动页面跳转,参数1:intent对象,参数二:请求码用于之后回调判断数据的来源
                startActivityForResult(intent, 1);

            }
        });
    }
    //重写onActivityResult()得到返回的数据 参数1:请求码 参数2:返回数据时传入的结果 参数三:返回数据的intent
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //对requestCode进行选择
        switch (requestCode) {
            case 1:
                if (resultCode == RESULT_OK) {
                    String str = data.getStringExtra("hello");
                    Log.e(TAG, "onActivityResult: " + str);
                }
                break;
            default:
        }

    }
}

2.修改SecondActivity中的代码:重写onBackPressed方法,监听是否按了返回键

public class SecondActivity extends AppCompatActivity {

    private static final String TAG = "SecondActivity";

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


    }
    //重写onBackPressed()在里面实现返回数据
    @Override
    public void onBackPressed() {
        super.onBackPressed();
        String str = "hello FirstActivity";
        //创建Intent对象
        Intent intent = new Intent();
        intent.putExtra("hello",str);
        //setResult()方法专门向上一个活动返回处理结果 参数1:处理结果一般为RESULT_OK或者RESULT_CALNCELED 参数2:带有数据的intent
        setResult(RESULT_OK,intent);
        finish();
    }
}

over

猜你喜欢

转载自blog.csdn.net/shaochen2015821426/article/details/79687416