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);
}
}
第二个活动向第一个活动回传数据
回传数据用到的方法有:
- startActivity方法
- startActivityForResult方法
- 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;
}
}