为Android Intents定义接口

时间:2011-08-12 14:29:16

标签: android android-intent rpc

使用Android startActivityForResult时,我对Intent返回的onActivityResult内容无法保证。

我想定义某种接口来限制从Activity向另一个传输数据时出错的可能性(例如错误的变量名称)。

有办法吗?例如,我可以使用与Android Interface Definition Language类似但在Activity s之间的内容吗?

1 个答案:

答案 0 :(得分:2)

在两个活动A,B之间传递数据时有两种情况。

  1. 活动A想要在活动B上传递数据(通过startActivity Intent)
  2. 活动B希望在使用setResult结束时返回活动A的数据
  3. 在这两种情况下,我建议为额外的密钥创建一些公共静态最终变量。

    例如,如果你需要使用从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();
        }
    }