Activity跳转
创建两个activity分别为test1Activity和test2Activity 在MianActivity的布局如下
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="cn.edu.henu.rjxy.test2.MainActivity"> <Button android:id="@+id/btn1" android:layout_width="150dp" android:layout_height="50dp" android:text="btn1" /> <Button android:id="@+id/btn2" android:layout_width="150dp" android:layout_height="50dp" android:text="btn2" /> <Button android:id="@+id/btn3" android:layout_width="150dp" android:layout_height="50dp" android:text="btn3" /> </LinearLayout>
- Activity跳转
/***
* 设置按钮点击事件 进行Activity跳转
*/
Button button1 = (Button)findViewById(R.id.btn1); //找到button
// 设置点击事件
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 跳转 启动实例化的activity
Intent intent=new Intent(MainActivity.this,test1Activity.class);
startActivity(intent);
}
});
- 向下一个活动提交数据
/**
* 向下一个活动传递数据
*
*/
Button button2 = (Button)findViewById(R.id.btn2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String strData="Hello World!";
Intent intent = new Intent(MainActivity.this, test2Activity.class);
// 传递数据 intent.putExtra(key,value);key事string类型
// 接受数据
// Intent intent = getIntent();
//intent.get数据类型Extra(KEY);
// 例如
// String data = intent.getStringExtra(key);
intent.putExtra("put_data",strData);
startActivity(intent);
}
});
- 返回数据给上一个活动
/***
* 返回数据给上一个活动
*
*/
Button button3 = (Button)findViewById(R.id.btn3);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,test1Activity.class);
startActivityForResult(intent,1);// 使用该方法启动test1Activity 后面需要一个唯一的值,传入1
}
});
}
test1Activity文件
public class test1Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test3);
/**
* 返回数据
*/
Button button = (Button)findViewById(R.id.test1_btn1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();//构建一个Intent 用来传递数据
intent.putExtra("returnData","这是一条返回上一个Activity的数据");
/**
* 接受两个参数 第一个参数用来向上一个活动返回处理结果
* 一般用RESULT_OK或RESULT_CANCELED
* 第二个参数是将带有数据的Intent传递回去
*/
setResult(RESULT_OK,intent);
/**
* 销毁活动,由于在上一个活动上使用的是 startActivityForResult();
* 所以这个活动销毁后会返回到上一个活动
*/
finish();
}
});
}
}
- test1Activity布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_test3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="cn.edu.henu.rjxy.test2.test1Activity">
<Button
android:id="@+id/test1_btn1"
android:layout_width="150dp"
android:layout_height="50dp"
android:text="btn1" />
</LinearLayout>
- 接收数据
/**
* 当test1Activity销毁后会调用MainActivity 里onActivityResult方法
* 所以需要重写该方法
* @param requestCode 启动活动时的请求码 我们之前设置的是1
* @param resultCode 返回数据的处理结果
* @param data 返回时的data
*
*
* 我们通过检查requestCode的值确定是不是test1Activity返回的数据
* resultCode的值判断处理的结果
* data取值并打印
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode){
case 1:
if(resultCode==RESULT_OK){
String strData = data.getStringExtra("returnData");
Log.d("MainActivity接受的数据",strData);
}
break;
default:
Log.d("ERROR","ERROR");
}
}
查看原文:http://blog.democpp.cn/2018/03/25/activity-%e7%ac%94%e8%ae%b0%e4%ba%8c/