当前位置: 首页 > 知识库问答 >
问题:

如何将startActivityForResult()更改为ActivityResultLauncher?

柴耀
2023-03-14

我是一个超级初学者与Android Studio。我正在尝试打开相册并获取图像,startActivityForResult()已被弃用。如何使用ActivityResultLauncher更改代码?

public class AddPhotoActivity extends AppCompatActivity implements View.OnClickListener {

    private ActivityAddPhotoBinding binding;

    private String Url;

    private FirebaseStorage firebaseStorage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        binding = DataBindingUtil.setContentView(this, R.layout.activity_add_photo);

        binding.addphotoBtnUpload.setOnClickListener(this);


        //Open Album
        Intent intent = new Intent(Intent.ACTION_PICK);
        intent.setType("image/*");
        startActivityForResult(intent, PICK_IMAGE_FROM_ALBUM);

        // Firebase storage
        firebaseStorage = FirebaseStorage.getInstance();

     
        binding.addphotoImage.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                Intent intent = new Intent(Intent.ACTION_PICK);
                intent.setType("image/*");
                startActivityForResult(intent, PICK_IMAGE_FROM_ALBUM);
            }
        });
    }

共有1个答案

印辉
2023-03-14

你应该。

 ActivityResultLauncher<String> mGetContent = registerForActivityResult(new GetContent(),
    new ActivityResultCallback<Uri>() {
        @Override
        public void onActivityResult(Uri uri) {
            // Handle the returned Uri
        }
});

@Override
public void onCreate(@Nullable savedInstanceState: Bundle) {
    // ...
    
    binding.addphotoImage.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            // Pass in the mime type you'd like to allow the user to select
            // as the input
            mGetContent.launch("image/*");
        }
    });
}
 类似资料:
  • 我是一个超级初学者与Android Studio。我正在尝试打开相册并获取图像,startActivityForResult()已被弃用。如何使用ActivityResultLauncher更改代码?

  • 问题内容: 根据以下我用于常规mysql的代码,如何将其转换为使用mysqli? 像更改为一样简单吗? 问题答案: 首先要做的可能是将每个函数调用都替换为等效函数,至少在您愿意使用过程式API的情况下-考虑到您已经有一些基于MySQL API的代码,这将是更简单的方法是一种程序性的。 为了解决这个问题,“ MySQLi扩展功能摘要” 绝对是有用的。 例如: 将被替换 将被替换为和/或,具体取决于上

  • 问题内容: 我需要帮助,下面是一个很小的非常基本的正则表达式,用于对电子邮件进行某种程度的验证,我的确意识到它不能发挥最大的作用,但就我的需求而言,现在可以了。 它当前使用PHP的 eregi函数 ,而php.net则说它现在已弃用,我应该改用 preg_match ,用 preg_match 代替erei不能用,有人可以告诉我如何使它工作吗? 问题答案: Perl风格的正则表达式模式始终需要定界

  • 问题内容: 假设我有以下QueryDict: 我想要一本这样的字典,例如: (我不在乎Unicode符号是否u继续存在。) 如果这样做queryDict.dict(),那么django网站建议,我将丢失属于的额外值var1,例如: 我正在考虑这样做: 有没有更好的办法? 问题答案: 这应该工作:

  • 问题内容: 我想将自己更改为我尝试过的内容,但无法将我的活动更改为片段。有人可以告诉我该怎么做吗?在哪里编辑我是Android上的新手。请告诉我和在此先感谢 这是我的活动: 问题答案: 只要了解一些步骤,您就可以现在和将来轻松地将Activity转换为Fragment ..: 首先,不要扩展,只要扩展.. 例如: 然后覆盖.. 然后通过LayoutInflater扩展布局,并分配给进一步用于子视图

  • 问题内容: 表:客户 我想将列从更改为`VARCHAR2(1000) 我尝试也 还 如果数据类型不是Clob,但通常会正常工作,但由于我使用的是oracle toad / apex,所以我得到了。 问题答案: 您可以尝试以下方法: 添加一个新列作为varchar2 将UPDATE CLOB名称更新为varchar2列; 经过 测试数据 : DROP CLOB列 将varchar2列重命名为CLOB