【问题标题】:Define interfaces for Android Intents为 Android Intent 定义接口
【发布时间】:2011-10-25 21:00:35
【问题描述】:
在使用 Android startActivityForResult 时,我无法保证在 onActivityResult 返回的 Intent 中得到什么。
我想定义某种接口来限制在将数据从Activity 传输到另一个时出错的可能性(例如输入错误的变量名)。
有没有办法做到这一点?例如,我可以使用类似于Android Interface Definition Language 但介于Activitys 之间的东西吗?
【问题讨论】:
标签:
android
android-intent
rpc
【解决方案1】:
在两个活动 A、B 之间传递数据时有两种情况。
- Activity A 想要在 Activity B 上传递数据(通过 startActivity Intent)
- Activity B 希望在使用 setResult 结束时返回 Activity A 的数据
在这两种情况下,我建议创建一些公共静态最终变量以供额外的键使用。
例如,如果您需要使用“评级”键将整数从 A 传递到 B,我可能会这样做
class A extends Activity {
public static final String RESULT_STATUS = "RESULT_STATUS";
// Whatever ....
public void startB(int rating) {
Intent toStart = new Intent(this, B.class);
toStart.putExtra(B.EXTRA_RATING, rating);
startActivityForResult(toStart, 0);
}
public void onActivityResult(int requestCode /* 0 in our case */, int resultCode, Intent data) {
if (resultCode == RESULT_OK ) {
String returnedStatus = data.getStringExtra(RESULT_STATUS);
// Whatever ....
}
}
class B extends Activity {
public static final String EXTRA_RATING = "EXTRA_RATING";
public void onCreate(Bundle b) {
// Whatever ....
int rating = getIntent().getIntExtra(EXTRA_RATING,0);
}
// Whatever ....
public void returnDataAndFinish(String status) {
Intent result = new Intent();
result.putExtra(A.RESULT_STATUS, status);
setResult(RESULT_OK, result);
finish();
}
}