Android之Intent(数据传递)

Activity分为带过滤器的Activity和不带过滤器的Activity
Activity的启动:
带Launcher过滤器的Activity由应用启动时自动启动。
其它的Activity可以调用startActivity方法启动。
startActivity(Intent intent);
startActivityForResult(Intent intent,int requestCode);
用指定的请求码启动,并获取其返回结果(需要重写方法onActivityResult(…)
关闭Activity:
调用finish()方法结束自己
调用finishActivity(int requestCode),结束指定请求码的Activity。
在Activity之间交换数据:
使用Bundle来完成。
把Bundle放到Intent中。
Intent的方法:
        putExtras(Bundle data):放入数据
        Bundle getExtras():取出数据
        putExtras(String name, Xxx value):用键值对的形式存入数据
        getXxxExtra(String name):取出指定键的数据
从其他Activity返回结果:
需要使用方法:startActivityForResult(intent,requestCode)
接收送回的结果需要重写方法: public void onActivityResult(reqCode,resCode,intent)
被调用的Activity需要:
        1.用getIntent方法取得启动时对应的Intent;
        2.用intent.putXXX方法写入要送回的结果;
        3.调用setResult(resultCode,intent)方法送回结果,intent说明了把结果送回哪一个Activity;
        4.调用方法finish结束自己。
**示例:**Activity1传递值,Activity2返回结果:

这里写图片描述    这里写图片描述     这里写图片描述

布局:
        activity_main:

<LinearLayout
        android:layout_width="368dp"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        tools:layout_editor_absoluteY="0dp"
        tools:layout_editor_absoluteX="8dp">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:text="昵称:" />
            <EditText
                android:id="@+id/username"
                android:width="200dp"
                android:layout_width="200dp"
                android:layout_height="50dp"
                android:inputType="text" />
        </LinearLayout>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="选择身份"
            android:onClick="selectPersonal"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="确定"
            android:onClick="zhuce"
            tools:layout_editor_absoluteX="0dp" />
</LinearLayout>

        activity_main2:

<TextView
        android:id="@+id/txtInfo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

       activity_main3:

<LinearLayout
        android:layout_width="368dp"
        android:layout_height="495dp"
        tools:layout_editor_absoluteY="8dp"
        tools:layout_editor_absoluteX="8dp"
        android:orientation="vertical">

        <CheckBox
            android:id="@+id/fu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="富二代"/>
        <CheckBox
            android:id="@+id/guan"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="官二代"/>
        <CheckBox
            android:id="@+id/nong"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="农二代"/>
        <CheckBox
            android:id="@+id/qiong"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="穷二代"/>
        <Button
            android:id="@+id/qd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"   
            android:text="确定"/>

  </LinearLayout>

JAVA代码
         MainActivity:

public class MainActivity extends AppCompatActivity {
    EditText username;
    String username1;
    String personal;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }
    public void zhuce(View view){
        username = (EditText)findViewById(R.id.username);
        username1 = username.getText().toString();
        Intent intent = new Intent(this,Main2Activity.class);
        Bundle data = new Bundle();
        data.putString("username",username1);
        data.putString("personal",personal);
        intent.putExtras(data);
        startActivity(intent);
    }
    public void selectPersonal(View view){
        Intent intent = new Intent(this,Main3Activity.class);
        startActivityForResult(intent,0);
    }
    protected void onActivityResult(int requestCode,int resultCode,Intent data){
        super.onActivityResult(requestCode,resultCode,data);
        if (requestCode==0&&resultCode==0){
            ArrayList<String> results = data.getStringArrayListExtra("results");
            personal="";
            for (String str:results){
                personal = personal + str;
            }
        }
    }
}

         Main2Activity:

public class Main2Activity extends AppCompatActivity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        TextView info = (TextView)findViewById(R.id.txtInfo);
        Intent intent = getIntent();
        String username = intent.getStringExtra("username");
        String peisonal = intent.getStringExtra("personal");
        info.setText("您好,"+peisonal+":"+username+"!");
    }

}

         Main3Activity:

public class Main3Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        Button btn = (Button)findViewById(R.id.qd);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ArrayList<String> res = new ArrayList<String>();
                if (((CheckBox)findViewById(R.id.fu)).isChecked())
                    res.add("富二代");
                if (((CheckBox)findViewById(R.id.guan)).isChecked())
                    res.add("官二代");
                if (((CheckBox)findViewById(R.id.nong)).isChecked())
                    res.add("农二代");
                if (((CheckBox)findViewById(R.id.qiong)).isChecked())
                    res.add("穷二代");
                Intent intent = getIntent();
                intent.putStringArrayListExtra("results",res);
                setResult(0,intent);
                finish();
            }
        });
    }
}

猜你喜欢

转载自blog.csdn.net/feiqinbushizheng/article/details/78882129