您的位置:首页 > 移动开发

Api demo源码学习(9)--App/Activity/Receive Result --Activity间传递数据

2011-12-14 20:25 609 查看
本节演示了父Activity跳转到子Activity后,接收子Activity传递回的数据。需要注意在Manifest.xml中注册子Activity。

基本步骤
1)在父Activity这边,Activity跳转时调用startActivityForResult方法,然后重写onActivityResult()方法用于接收子Activity传回的数据。
2)在子Activity这边,调用setResult()函数设置返回值。

具体解释见代码:
父Activity ReceiveResult.java:

public class ReceiveResult extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.receive_result);

mResults = (TextView)findViewById(R.id.results);

mResults.setText(mResults.getText(), TextView.BufferType.EDITABLE);
Button getButton = (Button)findViewById(R.id.get);
getButton.setOnClickListener(mGetListener);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// 如果有多个子Activity都返回数据的话,可以用requestCode来区分是哪个子Activity返回的数据,但本例中只有一个Activity.
if (requestCode == GET_CODE) {
Editable text = (Editable)mResults.getText();

// 如果子Activity启动失败或者没有传回参数,则resultCode就为RESULT_CANCELED
if (resultCode == RESULT_CANCELED) {
text.append("(cancelled)");

// Our protocol with the sending activity is that it will send
// text in 'data' as its result.
} else {
text.append("(okay ");
text.append(Integer.toString(resultCode));
text.append(") ");
if (data != null) {
text.append(data.getAction());
}
}
text.append("\n");
}
}

static final private int GET_CODE = 0;

private OnClickListener mGetListener = new OnClickListener() {
public void onClick(View v) {
// 若需获取子Activity传递回来的数值,此处就不再是调用startActivity()函数了,而是调用startActivityForResult()函数,
// 参数GET_CODE用来区分是哪个子Activity传回的数据。需要重写onActivityResult()函数。
Intent intent = new Intent(ReceiveResult.this, SendResult.class);
startActivityForResult(intent, GET_CODE);
}
};

private TextView mResults;
}


子Activity ReceiveResult.java

public class SendResult extends Activity
{
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

setContentView(R.layout.send_result);

Button button = (Button)findViewById(R.id.corky);
button.setOnClickListener(mCorkyListener);
button = (Button)findViewById(R.id.violet);
button.setOnClickListener(mVioletListener);
}

private OnClickListener mCorkyListener = new OnClickListener()
{
public void onClick(View v)
{
// 在Activity finish之前,调用setResult函数,确定本activity返回的值

setResult(RESULT_OK, (new Intent()).setAction("Corky!"));
finish();
}
};

private OnClickListener mVioletListener = new OnClickListener()
{
public void onClick(View v)
{
// To send a result, simply call setResult() before your
// activity is finished.
setResult(RESULT_OK, (new Intent()).setAction("Violet!"));
finish();
}
};
}


[align=left]布局文件比较简单,就不放出了,以上即可。[/align]
[align=left]
[/align]
[align=left]下一节:Api demo源码学习(10)--App/Activity/Redirection[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: