【问题标题】: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 之间传递数据时有两种情况。

    1. Activity A 想要在 Activity B 上传递数据(通过 startActivity Intent)
    2. 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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-01-24
      • 2016-03-18
      • 2018-02-19
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 2019-10-11
      • 2022-07-20
      • 2021-07-31
      相关资源
      最近更新 更多