【问题标题】:Why is setting a String in class not possible but getting the String possible?为什么无法在类中设置字符串但可以获取字符串?
【发布时间】:2018-07-30 23:26:58
【问题描述】:

我的问题包括Activity 和RecyclerViewAdapter。 我想将 Uri 的 Stringvalue 从我的Activity 传递给我的RecyclerViewAdapter。 为了传递我正在使用这个 Getter 和 Setter 类:

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(); 发送一个intent,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);

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

onActivityResult 在Activty 中的代码:

@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 收到文本“这是我的文本”。

所以我可以断定问题出在setTesturl。

所以我尝试用updateDataAdapter.setTesturl("This is my text");替换updateDataAdapter.setTesturl(String.ValueOf(uri2));

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

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

请帮助我。

【问题讨论】:

    标签: java android android-studio oop getter-setter


    【解决方案1】:

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

    私有 updateDataAdapter updateDataAdapter = new updateDataAdapter(); @覆盖 公共无效onActivityResult(int RC,int RQC,意图I){ super.onActivityResult(RC, RQC, I); if (RC == 1 && RQC == RESULT_OK && I != null && I.getData() != null) { uri uri2 = I.getData(); 尝试 { updateDataAdapter.setTesturl(String.ValueOf(uri2)); } 捕捉(IOException e){ e.printStackTrace(); }} }

    【讨论】:

      【解决方案2】:
       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。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-06
        • 1970-01-01
        • 2020-09-25
        • 1970-01-01
        • 1970-01-01
        • 2021-08-25
        相关资源
        最近更新 更多