【发布时间】:2020-07-10 15:13:42
【问题描述】:
我创建了一个内容检索器,它从另一个应用程序中的内容提供程序调用数据,我可以成功读取数据,但我想将数据从我的内容检索器中的 onLoadFinished 方法传递给应该显示数据的活动按下按钮。但我不确定该怎么做,我尝试使用 getter 和 setter,但它不打印任何内容。
这是我的内容提供程序中的行:
String[] columns = new String[]{"_id", "item"};
MatrixCursor matrixCursor = new MatrixCursor(columns);
matrixCursor.addRow(new Object[]{1, "FOUND"});
//Test is a string object that gets serialized to Json
matrixCursor.addRow(new Object[]{2, new Gson().toJson(test)});
matrixCursor.setNotificationUri(getContext().getContentResolver(), uri);
return matrixCursor;
我想从第二行获取数据,这就是我在我的 Retriever 类的onLoadFinished 中拥有的数据:
class Retriever : LoaderManager.LoaderCallbacks<Cursor>{
private var dataFromJson = ""
//getters and setters
fun setData(data: String){
this.dataFromJson = data
}
fun getData():String{
return dataFromJson
}
//other Loader method such as onCreateLoader, etc.
override fun onLoadFinished(loader: Loader<Cursor>, data: Cursor?) {
try
{
val success: Boolean
if (data != null && data.getCount() > 0)
{
data.moveToFirst()
val dataString = data.getString(1)
//this works, I am able to find the "found" text at the first row
success = dataString.equals("FOUND", ignoreCase = true)
//move to 2nd row
data.moveToNext()
//get data from 2nd row does not work
val JSonData = data.getString(1)
setData(JSonData)
}
else
{
Timber.d( "onLoadFinished Unknown error occurred")
success = false
}
//custom interface listener
listener.onClassListener(success)
}
catch (e:Exception) {
Timber.d("Error")
}
}
}
在我的活动中,当我创建一个 Retriever 对象并调用 getData() 方法时,它什么也不显示。
class TestActivity{
private lateinit var dataRetriever: Retriever
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_test_activity)
//I have a textView called dataTxt
//displays nothing
dataTxt.text = dataRetriever.getData()
}
}
我们将不胜感激任何帮助或建议
【问题讨论】:
标签: java android kotlin android-contentprovider