版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/JamieCheung/article/details/79086484
使用场景:
类似于这种场景:第一个Activity中需要选择设备的经纬度信息(在百度选择地理位置选择),因此需要重新开一个Activity界面显示地图,让用户在地图上标注地点,取得经纬度信息,并返回第一个页面,保存在经纬度信息栏;
步骤:
1、第一个MainActivity.java:
通过startActivityForResult(Intent intent, requestCode int)方法启动第二个Activity;
package top.javaer.app.sound;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.getChuanzhi);
findViewById(R.id.startAnotherActivity).setOnClickListener(new View.OnClickListener() {
/**
* Activity之间通过Intent传递自定义的值对象
* @param view
*/
@Override
public void onClick(View view) {
Intent i = new Intent(MainActivity.this, SecondActivity.class);
i.putExtra("user", new User("Jamie", 20));
// startActivity(i);
startActivityForResult(i, 0);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
textView.setText("第二个Activity传过来的值是:" + data.getStringExtra("data"));
}
}
2、第二个SecondActivity.java:
通过Intent传递参数,值为editText.getText().toString();
通过setResult(resultCode int, Intent intent)设置返回状态码、返回数据;
通过finish();结束当前的Activity;
package top.javaer.app.sound;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
// Activity获取Intent传递过来的值对象
TextView textView = findViewById(R.id.secondText);
// User user = (User) getIntent().getSerializableExtra("user");
User user = (User) getIntent().getParcelableExtra("user");
textView.setText(String.format("user info(name=%s, age=%d)", user.getName(), user.getAge()));
final EditText editText = findViewById(R.id.shuru);
Button button = findViewById(R.id.fanhui);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent();
i.putExtra("data", editText.getText().toString());
setResult(1, i);
finish();
}
});
}
}
3、结果显示:第二个Activity传过来的值是:...(第二个页面输入的数据)。
4、补充两个界面的xml文件:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="368dp"
android:layout_height="447dp"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
tools:layout_editor_absoluteX="8dp"
tools:layout_editor_absoluteY="56dp"
xmlns:android="http://schemas.android.com/apk/res/android">
<Button
android:id="@+id/startAnotherActivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="跳转下一个Activity"/>
<TextView
android:id="@+id/getChuanzhi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/startAnotherActivity"/>
</LinearLayout>
activity_second.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="368dp"
android:layout_height="447dp"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
tools:layout_editor_absoluteX="8dp"
tools:layout_editor_absoluteY="56dp"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@+id/secondText"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/shuru"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/fanhui"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="返回第一个Activity"
android:layout_below="@+id/shuru"/>
</LinearLayout>
更多Android、iOS、Python、Java、MySQL的文章,请点击:
http://blog.csdn.net/jamiecheung
http://blog.csdn.net/u010841622