通过startActivity方法启动原Activity 到 新启动Activity、新启动Activity 到原Activity的传值 demo
时间: 2023-08-22 21:05:51 浏览: 108
activity之间的传值demo
好的,下面是一个简单的演示代码:
在原Activity中,定义一个按钮,点击按钮启动新的Activity,并将需要传递的值通过Intent对象放入Intent中:
```java
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_CODE = 1;
private Button btnStart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnStart = findViewById(R.id.btn_start);
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, NewActivity.class);
intent.putExtra("message", "Hello, NewActivity!");
startActivityForResult(intent, REQUEST_CODE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null) {
String message = data.getStringExtra("message");
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}
}
}
```
在新启动的Activity中,获取从原Activity传递过来的值,并将一个新的值通过Intent对象返回给原Activity:
```java
public class NewActivity extends AppCompatActivity {
private Button btnBack;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new);
String message = getIntent().getStringExtra("message");
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
btnBack = findViewById(R.id.btn_back);
btnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("message", "Hello, MainActivity!");
setResult(RESULT_OK, intent);
finish();
}
});
}
}
```
在新启动的Activity中,通过getIntent方法获取从原Activity传递过来的Intent对象,然后通过getStringExtra方法获取键为"message"的值,并在Toast中显示该值。
在新启动的Activity中,定义一个按钮,点击按钮将一个新的值放入Intent中,并通过setResult方法将该Intent对象返回给原Activity。最后在新启动的Activity中调用finish方法,关闭该Activity并返回到原Activity。
在原Activity中,通过调用startActivityForResult方法启动新Activity,并传递一个请求码(REQUEST_CODE),用于在多个启动Activity时区分不同的请求。在原Activity中,重写onActivityResult方法,并根据返回的请求码、结果码和Intent对象获取返回的值,并在Toast中显示该值。
阅读全文