Android---获取Activity返回的数据

使用场景:

类似于这种场景:第一个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>

更多AndroidiOSPythonJavaMySQL的文章,请点击:

http://blog.csdn.net/jamiecheung


更多JavaUnity3D的文章,请点击:

http://blog.csdn.net/u010841622

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章