首页 > 解决方案 > 范围问题 - 额外添加意图并从 2 个不同的功能开始活动

问题描述

我有 2 个侦听器,1 个需要额外获取意图,即图像 uri,另一个需要使用该额外内容启动其他活动。但我认为,由于它们处于不同的范围内,额外的内容并没有真正用于启动其他活动的意图。

这是代码:

        private Intent intent = new Intent(this, OtherActivity.class);
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            final Button button= findViewById(R.id.button);
            button.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    intent = new Intent(v.getContext(), OtherActivity.class);
                    startActivity(intent);
                }
            });


        }
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {

            if (requestCode == Thing.SPECIFIC_REQUEST_CODE) {
                Thing.ActivityResult result = Thing.getActivityResult(data);
                if (resultCode == RESULT_OK) {
                    Uri resultUri = result.getUri();
                    intent.putExtra("imageUri", resultUri.toString());    
                }
           }
   } 

我希望我输入的额外内容onActivityResult将发送到onClickListener单击按钮时启动的活动

标签: javaandroid

解决方案


我的建议是使用一个字段来存储图像 URI:

1-在你的类中定义一个字符串变量

String imageURI = "";

2- 在你的 onActivityResult :

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (requestCode == Thing.SPECIFIC_REQUEST_CODE) {
            Thing.ActivityResult result = Thing.getActivityResult(data);
            if (resultCode == RESULT_OK) {
                Uri resultUri = result.getUri();
                imageURI = resultUri.toString();    
            }
       }

3-在您的 onClickListener 中:

        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
            intent = new Intent(v.getContext(), OtherActivity.class);
                intent.putExtra("imageUri", imageURI);    
                startActivity(intent);
            }
        });

推荐阅读