为什么无法在 class 中设置字符串,但可以获取字符串?

Why is setting a String in class not possible but getting the String possible?

我的问题包括一个 Activity 和一个 RecyclerViewAdapter。 我想将 Uri 的字符串值从我的 Activity 传递到我的 RecyclerViewAdapter。 为了传递我正在使用这个 Getter 和 Setter class:

updateDataAdapter.java

public class updateDataAdapter {

    public String testurl;

    public String getTesturl() {
        return testurl;
    }

    public void setTesturl(String testurl) {
        this.testurl = testurl;
    }
}

Recyclerview 使用 ((Activity) context).startActivityForResult(); 发送意图,Activity 使用 onActivityResult 接收 intent 和 RequestCode。

来自 Recyclerview .java 的代码:

Intent intent = new Intent();

intent.setType("image/*");

intent.setAction(Intent.ACTION_GET_CONTENT);

((Activity) context).startActivityForResult(Intent.createChooser(intent, "Select Image From Gallery"), 1);

ContextActivity(在设置适配器时作为参数给出)。

ActivtyonActivityResult的代码:

@Override
public void onActivityResult(int RC, int RQC, Intent I) {

    super.onActivityResult(RC, RQC, I);

    if (RC == 1 && RQC == RESULT_OK && I != null && I.getData() != null) {

        Uri uri2 = I.getData();

        updateDataAdapter  updateDataAdapter = new updateDataAdapter();

        try { 
            updateDataAdapter.setTesturl(String.ValueOf(uri2));
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}

问题:

如果我在 RecyclerViewAdapter 中调用 getTesturl,则字符串为空。

这就是为什么我尝试了不同的方法来定位问题。

首先我将(在我的 updateDataAdapter.java 中)public String testurl; 设置为 public String testurl = "This is my text"; 并调用 getTesturl 接收文本 "This is my text".

所以我可以断定问题是setTesturl

所以我尝试用updateDataAdapter.setTesturl("This is my text");

替换updateDataAdapter.setTesturl(String.ValueOf(uri2));

但在这种情况下,字符串为空。

我该如何解决这个问题,为什么我的代码不起作用?

请帮助我。

 if (RC == 1 && RQC == RESULT_OK && I != null && I.getData() != null) {

    Uri uri2 = I.getData();

    updateDataAdapter  updateDataAdapter = new updateDataAdapter();

    try { 
        updateDataAdapter.setTesturl(String.ValueOf(uri2));
    }
    catch(IOException e){
        e.printStackTrace();
   }}
  }

在这里创建一个新的updateDataAdapter。将新创建的 updateDataAdapter 替换为现有的 RecyclerViewAdapter.

'updateDataAdapter' 应该声明 class 成员变量。

private updateDataAdapter  updateDataAdapter = new updateDataAdapter();

@Override
public void onActivityResult(int RC, int RQC, Intent I) {

    super.onActivityResult(RC, RQC, I);


    if (RC == 1 && RQC == RESULT_OK && I != null && I.getData() != null) {

        Uri uri2 = I.getData();

        try { 
            updateDataAdapter.setTesturl(String.ValueOf(uri2));
        }
        catch(IOException e){
            e.printStackTrace();
       }}
      }