为什么无法在 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);
Context
是 Activity
(在设置适配器时作为参数给出)。
Activty
中onActivityResult
的代码:
@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();
}}
}
我的问题包括一个 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);
Context
是 Activity
(在设置适配器时作为参数给出)。
Activty
中onActivityResult
的代码:
@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(); }} }