其他分享
首页 > 其他分享> > 如何使用Intent在活动中穿梭

如何使用Intent在活动中穿梭

作者:互联网

显式Intent的使用

button1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
        startActivity(intent);
     }
 });

隐式Intent的使用

向下一个活动传递数据

public void onClcik(View v){
    String data = "Hello SecondActivity";
    Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
    intent.putExtra("extra_data",data);
    startActivity(intent);
}

putExtra()方法中接收两个参数,第一个是键,用于后面从Intent中取值,第二个才是真正要传递的数据。

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.second_layout);
    Intent intent = getIntent();
    String data = intent.getStringExtra("extra_data");
    Log.d("SecondActivity",data);
 }

首先通过getIntent()方法获取用于启动SecondActivity的Intent,然后调用getStringExtra()方法,传入相应键值。

返回数据给上一个活动

button1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
        startActivityForResult(intent,1);
    }
}

这里使用startActivityForResult()方法来启动SecondActivity,请求码只要是一个唯一值即可。在SecondActivity中给按钮注册点击事件,并在点击事件添加返回数据的逻辑

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.second_layout);    
    Button button2 = (Button) findViewById(R.id.button_2);
    button2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.putExtra("data_return", "Hello FirstActivity");
            setResult(RESULT_OK, intent);
            finish();
        }
    });
}

这里构建的Intent仅用于传输数据。把数据存储在Intent中后,调用了setResult()方法,专门用于向上一个活动返回数据的。此方法接收两个参数,第一个用于向上一个活动返回处理结果,一般只使用RESULT_OK或RESULT_CANCELED,第二个则是把带有数据的Intent传递回去,然后用finish()方法销毁当前活动。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
        case 1:
            if (resultCode == RESULT_OK) {
                String returnedData = data.getStringExtra("data_return");
                Log.d("FirstActivity", returnedData);
            }
            break;
        default:
    }
}

onActivityResult()方法中有三个参数,第一个requestCode,即在启动活动时传入的请求码(判断数据来源的依据)。第二个是resultCode,即在我们返回数据时传入的处理结果(判读数据处理是否成功)。第三个是data,即携带数据返回的Intent。

 

标签:SecondActivity,void,如何,穿梭,Intent,intent,活动,data
来源: https://blog.csdn.net/weixin_43568110/article/details/94863165