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



    

activity_second.xml



    
    
    

更多AndroidiOS、Python、Java、MySQL的文章,请点击:

http://blog.csdn.net/jamiecheung


更多Java、Unity3D的文章,请点击:

http://blog.csdn.net/u010841622

你可能感兴趣的:(Android)