Android学习笔记之活动间的数据传递

本文是Android学习笔记,重点讲解了Activity之间数据的传递方法,包括如何向下一个Activity传递数据,以及如何从第二个Activity向第一个Activity回传数据,涉及到Intent的使用、数据接收和回传的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android中Activity之间数据传递

/**
*@author StormMaybin
*@Date 2016-06-06

*/

向下一个活动传递数据:

Intent除了可以用作启动Activity之外,还可以用来在Activity之间传递数据,先看看向下一个Activity传递数据:


在这个例子需要用到两个不同的Activity,对应的应该有两个布局文件。


public class FActivity extends Activity
{
    @Override
    protected void onCreat(Bundle savedInstanceState)
    {
        super.onCreat(savedInstanceState);
        setContentView(R.layout.first_layout);
    }
}
public class SActivity extends Activity
{
    @Override
    protected void onCreat(Bundle savedInstanceState)
    {
        super.onCreat(savedInstanceState);
        setContentView(R.layout.second_layout);
    }
}

然后要在layout文件下新建两个布局文件,一个是first_layout和second_layout。
在第一个布局文件中添加一个Button1,在第二个布局文件中添加一个Button2。


<Button
    android:id="@+id/button1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="启动SActivity"
    android:background="#FFFFFFFF"/>
<Button
    android:id="@+id/button2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="回传数据"
    android:background="#FFFFFFFF"/>

下面要在两个Activity中实例化Button来监听事件


public class FActivity extends Activity
{
    private Button button1;
    @Override
    protected void onCreat(Bundle savedInstanceState)
    {
        super.onCreat(savedInstanceState);
        setContentView(R.layout.first_layout);
        button1 = (Button)findViewById(R.id.button1);
        button1.setOnClickListener(new OnClickListener()
        {
            @Override
            //重写这个是为了向下一个Activity传递数据
            public void onClick(View v)
            {
                String data = "Hello SActivity!";
                Intent intent = new Intent(FActivity.this,SActivity.class);
                intent.putExtra("Data",data);
                startActivity(intent);
            }
        });
    }

然后要在第二个活动中添加以下哎代码来接收第一个Activity传递来的数据

public class SActivity extends Activity
{
    @Override
    protected void onCreat(Bundle savedInstanceState)
    {
        super.onCreat(savedInstanceState);
        setContentView(R.layout.second_layout);
        Intent intent = getIntent();
        String data = intent.getStringExtra("Data");
        Log.d("SActivity",data);
    }
}

第二个活动向第一个活动回传数据


回传数据用到的方法有:

  1. startActivity方法
  2. startActivityForResult方法
  3. setResult方法

在第一个活动的基础上修改成以下代码:

button1.setOnClickListener(new OnClickListener()
{
    Intent intent = new Intent(FActivity.this,SActivity.class);
    startActivity(intent,1);
});

然后Activity2中代码如下:


button2.setOnClickListener(new OnClickListener()
{
    Intenht intent = new Intent();
    intent.putExtra("return_data","Hello FActivity");
    setResult(RESULT_OK,intent);
    finish();
});

接着要在第一个Activity中复写onActivityResult方法

protected void onActivityResult(int requestCode,int resultCode,Intent data)
{
    swith(requestCode)
    {
        caset 1:
            if(resultCode == RESULT_OK)
            {
                String return_data = Data.getStringData("return_data");
                Log.d("FActivity",returndata);
            }
            break;
        default:
            break;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值