Android : 页面之间的数据传递 intent+bundle

Android : 页面之间的数据传递 intent+bundle

  一:Activity之间的传递——从当前页面直接传到跳转 的页面

1:方法:利用Intent和Bundle实现

2:目录:

     ​编辑

     一个activity对应一个xml对应一个界面;

3:MainAcitivity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">

   <EditText
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:id="@+id/et1"
       android:hint="数据填写行1"
       />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/et2"
        android:hint="数据填写行2"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="传递"
        android:layout_gravity="center"
        android:id="@+id/bt"/>

</LinearLayout>
 

传递页

 js.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">

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

        android:layout_gravity="center"
        />

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

        android:layout_gravity="center"
        />

</LinearLayout>

接收页

4:java

MainAcitivity.java

package com.jyt.woc1;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
    EditText et1,et2;
    Button bt;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        et1=findViewById(R.id.et1);
        et2=findViewById(R.id.et2);
        bt=findViewById(R.id.bt);

        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String x,y;
                x=et1.getText().toString();
                y=et2.getText().toString();

                Bundle bundle=new Bundle();//存各种数据
                bundle.putString("1:",x);
                bundle.putString("2:",y);

                Intent woc =new Intent(MainActivity.this,js.class);
                woc.putExtras(bundle);
                startActivity(woc);

            }
        });

    }
}

js.java

package com.jyt.woc1;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.TextView;

public class js extends AppCompatActivity {
    TextView tv1,tv2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.js);

        tv1=findViewById(R.id.tv1);
        tv2=findViewById(R.id.tv2);

        Intent woc=getIntent();//获取
        Bundle nb=woc.getExtras();//取出数据

        tv1.setText(nb.getString("1:"));//通过key取出
        tv2.setText(nb.getString("2:"));



    }
}

二:Activity之间的传递——回调到上一页

1:结构两个xml对应两个Acitivity 

​编辑

2:xml文件

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Who am i?"
        android:layout_gravity="center"
        android:textSize="50sp"
        android:textColor="@color/black"

        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="你自己决定"
        android:layout_gravity="center"
        android:textSize="30sp"
        android:id="@+id/et"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="让我康康!"

        android:textSize="20sp"
        android:layout_gravity="center"
        android:id="@+id/bt"/>

</LinearLayout>

xz.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical">

    <RadioGroup

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_gravity="center"

        android:id="@+id/rg">

       <RadioButton

           android:layout_width="wrap_content"

           android:layout_height="wrap_content"

           android:text="我是阿伟!"

           android:textSize="20sp"

           android:id="@+id/rb1"

           />



        <RadioButton

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="我是杰哥啊!"

            android:textSize="20sp"

            android:id="@+id/rb2"

            />



        <RadioButton

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:text="在下邢道荣!"

            android:textSize="20sp"

            android:id="@+id/rb3"

            />

    </RadioGroup>

    <Button

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:id="@+id/bt1"

        android:layout_gravity="center"

        android:text="我觉醒了"

        />



</LinearLayout>

3:java

MainAcitivity.java

​
package com.jyt.woc2;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ImageView;

import android.widget.TextView;

import org.w3c.dom.Text;

public class MainActivity extends AppCompatActivity {

    private TextView ed;

    private Button bt;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        ed=findViewById(R.id.et);

        bt=findViewById(R.id.bt);

        bt.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                Intent woc=new Intent(MainActivity.this,xz.class);//跳转

                startActivityForResult(woc, 1);/* 请求有回调的跳转 */

            }

        });

    }

    @Override//对回调的数据做对应的处理很关键!!

    protected void onActivityResult(int requestCode, int resultCode, Intent data)

    {

        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode==1 && resultCode==2){  //判断是否为待处理的结果   请求码和回调码一致才行

            Bundle bundle=data.getExtras();          //获取传递的数据包

            String woc =bundle.getString("woc");

            ed.setText(woc);

        }

    }

}



​

xz.java

package com.jyt.woc2;



import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.RadioButton;

import android.widget.RadioGroup;



import androidx.appcompat.app.AppCompatActivity;



public class xz extends AppCompatActivity {



    private RadioButton rb1,rb2,rb3;

    private Button bt;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.xz);



        rb1=findViewById(R.id.rb1);

        rb2=findViewById(R.id.rb2);

        rb3=findViewById(R.id.rb3);



        bt=findViewById(R.id.bt1);



        bt.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                String x;

                if(rb1.isChecked())

                {

                    x=rb1.getText().toString();

                }

                else if(rb2.isChecked())

                {

                    x=rb2.getText().toString();

                }

                else

                {

                    x=rb3.getText().toString();

                }

                Intent intent=new Intent();//创建并实例化一个intent对象

                Bundle bundle = new Bundle();    //实例化要传递的数据包

                bundle.putString("woc",x);// 放入数据

                intent.putExtras(bundle);    //将数据包保存到intent中

                setResult(2, intent);    //设置返回的结果码,并返回调用该Activity的Activity

                finish();        //关闭当前Activity

            }

        });

    }

}

​编辑

 ​编辑

​编辑


三:Fragment 向Activity 传递数据

​编辑

1:  activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".MainActivity" >

  <FrameLayout

        android:id="@+id/fragment_container1"

        android:layout_width="match_parent"

        android:layout_height="500dp"/>

</LinearLayout>

2:   MainActivity.java

package com.example.a5_4_1;





import android.app.Activity;

import android.app.Fragment;

import android.app.FragmentManager;

import android.app.FragmentTransaction;

import android.os.Bundle;

public class MainActivity extends Activity {

        FragmentManager fm;

        FragmentTransaction ft,ft1;

        Fragment f1=null;

        protected void onCreate(Bundle savedInstanceState) {

               super.onCreate(savedInstanceState);

               setContentView(R.layout.activity_main);



               fm = getFragmentManager();   // 获取Fragment

               ft = fm.beginTransaction(); // 开启一个事务

               f1 = new MainFragment1();

               ft.add(R.id.fragment_container1, f1);

               ft.commit();



            }

    

 }

xml中放一个FrameLayout,加载fragment界面

3:mainfragment1.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    >

    <LinearLayout

      android:orientation="horizontal"

      android:layout_width="wrap_content"

      android:layout_height="wrap_content" >

         <TextView

        android:id="@+id/txt1"

        android:text="请输入您的姓名"

        android:textSize="30dp"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:background="#FF0000"

        />

       <EditText

        android:id="@+id/edt1"

        android:text=""

        android:textSize="30dp"

        android:layout_width="180dp"

        android:layout_height="wrap_content"

        />

    </LinearLayout>

  

    <Button

        android:id="@+id/button"

        android:text="点击"

        android:gravity="center"

        android:layout_marginTop="50sp"

        android:layout_marginLeft="120sp"

        android:textSize="30dp"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:background="#00FF00"/>

</LinearLayout>

4:mainfragment.java

package com.example.a5_4_1;



import android.app.Fragment;

import android.content.Intent;

import android.os.Bundle;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.Button;

import android.widget.EditText;

public class MainFragment1 extends Fragment {

    

            @Override

            public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

                View contentView = inflater.inflate(R.layout.mainfragment1, container, false);



                return contentView;

            }

            public void onActivityCreated(Bundle savedInstanceState) { 

                super.onActivityCreated(savedInstanceState); 

                final EditText edt=(EditText)getActivity().findViewById(R.id.edt1);

                Button button = (Button) getActivity().findViewById(R.id.button); 

                button.setOnClickListener(new View.OnClickListener() { 

            @Override 

            public void onClick(View v) { 

               

                Intent intent = new Intent();

                intent = new Intent(getActivity(), SecondActivity.class);

                       intent.putExtra("data", edt.getText().toString());

                       startActivity(intent);

                        //Toast.makeText(getActivity(), "Clicked", Toast.LENGTH_LONG).show(); 

                    } 

                }); 

           

        }      

        }

5:

SecondActivity.java

​
package com.example.a5_4_1;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.widget.TextView;

public class SecondActivity extends Activity {

        @Override

        protected void onCreate(Bundle savedInstanceState) {

               super.onCreate(savedInstanceState);

               setContentView(R.layout.activity_second);

               TextView text=(TextView)findViewById(R.id.txt1);

   

               Intent intent = getIntent();

               String data1 = intent.getStringExtra("data");

               text.setText("你的姓名是"+data1);

        }

}



​

6:activity_second.xml

​
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".SecondActivity" >

    <TextView

        android:id="@+id/txt1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="" />

  

</LinearLayout>



​

这里不难发现,基本原理就和Activity之间的直传差不多,只是在Main下只加载界面而工作全部在加载的界面下完成


  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值