我的问题包括一个Activity
和一个RecyclerViewAdapter
。
我想将Uri的Stringvalue从我的Activity
传递到我的RecyclerViewAdapter
。
为了通过,我使用了这个 Getter and Setter 类:
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
(在设置适配器时作为参数提供)。
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();
}}
}
如果我在getTesturl
中调用RecyclerViewAdapter
,则字符串为空。
这就是为什么我尝试其他方法来定位问题的原因。
首先,我在updateDataAdapter.java
中将public String testurl;
设置为public String testurl = "This is my text";
,并呼叫getTesturl
收到文本“这是我的文本” 。
setTesturl
。所以我尝试将updateDataAdapter.setTesturl(String.ValueOf(uri2));
替换为updateDataAdapter.setTesturl("This is my text");
但是在这种情况下,字符串为空。
我该如何解决该问题,为什么我的代码无法正常工作?
请帮助我。
答案 0 :(得分:0)
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
。
答案 1 :(得分:0)
“ updateDataAdapter”应声明类成员变量。
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(); }} }