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

Android Sample Code之API Demos (Activity四): 一个activity接收另一个activity结果

2011-11-05 21:53 471 查看
这个例子演示了一个activity如何能接收到另一个activity的结果。

看代码ReceiveResult.java:

public class ReceiveResult extends Activity {
/**
* Initialization of the Activity after it is first created.  Must at least
* call {@link android.app.Activity#setContentView setContentView()} to
* describe what is to be displayed in the screen.
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
// Be sure to call the super class.
super.onCreate(savedInstanceState);

// See assets/res/any/layout/hello_world.xml for this
// view layout definition, which is being set here as
// the content of our screen.
setContentView(R.layout.receive_result);

// Retrieve the TextView widget that will display results.
mResults = (TextView)findViewById(R.id.results);

// This allows us to later extend the text buffer.
mResults.setText(mResults.getText(), TextView.BufferType.EDITABLE);

// Watch for button clicks.
Button getButton = (Button)findViewById(R.id.get);
getButton.setOnClickListener(mGetListener);
}

/**
* This method is called when the sending activity has finished, with the
* result it supplied.
*
* @param requestCode The original request code as given to
*                    startActivity().
* @param resultCode From sending activity as per setResult().
* @param data From sending activity as per setResult().
*/
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
// You can use the requestCode to select between multiple child
// activities you may have started.  Here there is only one thing
// we launch.
if (requestCode == GET_CODE) {

// We will be adding to our text.
Editable text = (Editable)mResults.getText();

// This is a standard resultCode that is sent back if the
// activity doesn't supply an explicit result.  It will also
// be returned if the activity failed to launch.
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");
}
}

// Definition of the one requestCode we use for receiving resuls.
static final private int GET_CODE = 0;

private OnClickListener mGetListener = new OnClickListener() {
public void onClick(View v) {
// Start the activity whose result we want to retrieve.  The
// result will come back with request code GET_CODE.
Intent intent = new Intent(ReceiveResult.this, SendResult.class);
startActivityForResult(intent, GET_CODE);
}
};

private TextView mResults;
}


一个activity接收到另一个activity的结果只需要如下步骤:

1. 重写onActivityResult函数,用来处理从另一个activity接收到的数据,这个函数在另一个activity结束时被调用。

2. 用startActivityForResult方法来启动另一个activity。

3. 在新启动的activity结束前调用setResult函数来传递结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐