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

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