使用Android startActivityForResult
时,我对Intent
返回的onActivityResult
内容无法保证。
我想定义某种接口来限制从Activity
向另一个传输数据时出错的可能性(例如错误的变量名称)。
有办法吗?例如,我可以使用与Android Interface Definition Language类似但在Activity
s之间的内容吗?
答案 0 :(得分:2)
在两个活动A,B之间传递数据时有两种情况。
在这两种情况下,我建议为额外的密钥创建一些公共静态最终变量。
例如,如果你需要使用从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();
}
}