Android Studio从一个activity跳转到另一个activity
简单的跳转
创建两个activity
创建跳转按钮
在第一个activity的onCreate中添加按钮监听事件,编写内部类
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,MainActivity2.class);
startActivity(intent,);
}
});
注意在第二个activity当中不能使用此方法返回,否则按自带返回按键将无法退出应用
第二个界面正确返回做法:
public void onClick(View v) {
//直接finish();
finish();
}
});
原因:
第一个界面向第二个界面传值
传值代码:
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//将此页面的值传到另一个页面
Intent intent = new Intent(MainActivity.this,MainActivity2.class);
intent.putExtra("name",textView1.getText().toString());
intent.putExtra("price",textView2.getText().toString());
startActivity(intent);
}
});
第二个界面接收值
接收代码:
//接收上个界面传过来的值
String name = getIntent().getStringExtra("name");
String price = getIntent().getStringExtra("price");
textView3.setText(name);
textView4.setText(price);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//返回上个界面
finish();
}
});
打包参数传值
当参数较多时,可以将参数大包到一个对象中
打包代码:
package cn.hnucm.myapplication;
import java.io.Serializable;
public class Product implements Serializable {
private String name;
private String price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}
传值代码:
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//将此页面的值传到另一个页面
Intent intent = new Intent(MainActivity.this,MainActivity2.class);
//当参数很多的时候,将参数打包到一个对象中
Product product = new Product();
product.setName(textView1.getText().toString());
product.setPrice(textView2.getText().toString());
intent.putExtra("product",product);
startActivity(intent);
}
});
接收代码:
//接收上个界面传过来的值
Product product = (Product)getIntent().getSerializableExtra("product");
textView3.setText(product.getName());
textView4.setText(product.getPrice());
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//返回上个界面
finish();
}
});
将第二个界面改变的值传回第一个界面
修改第一个activity最后一行
修改控件