Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将活动转换为使用数据库和适配器类的片段_Java_Android_Android Fragments - Fatal编程技术网

Java 将活动转换为使用数据库和适配器类的片段

Java 将活动转换为使用数据库和适配器类的片段,java,android,android-fragments,Java,Android,Android Fragments,我正在从联机加载json文件并将其保存在Sqlite上,这样当应用程序脱机时,用户仍然可以看到数据。 它在日常活动中运行良好 但当我试图将其转换为片段时,我得到了无法将片段转换到FlowerAdapter$FlowerClickListener的错误 这是错误文件 我的名字是尼泊尔语 这里是主要的活动 public类MainActivity扩展AppCompatActivity实现FlowerAdapter.FlowerClickListener,FlowerFetchListener{ 私

我正在从联机加载json文件并将其保存在Sqlite上,这样当应用程序脱机时,用户仍然可以看到数据。 它在日常活动中运行良好

但当我试图将其转换为片段时,我得到了无法将片段转换到FlowerAdapter$FlowerClickListener的错误

这是错误文件

我的名字是尼泊尔语

这里是主要的活动

public类MainActivity扩展AppCompatActivity实现FlowerAdapter.FlowerClickListener,FlowerFetchListener{
私有静态最终字符串标记=MainActivity.class.getSimpleName();
私人回收视图mRecyclerView;
私人RestManager;
私人花器;
私有数据库mDatabase;
专用按钮mReload;
私人住宅;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
配置视图();
mManager=newrestmanager();
mDatabase=新数据库(此);
loadFlowerFeed();
mReload.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
loadFlowerFeed();
}
});
}
私有void loadFlowerFeed(){
mDialog=新建进度对话框(MainActivity.this);
setMessage(“正在加载花数据…”);
mDialog.setCancelable(真);
mDialog.setProgressStyle(ProgressDialog.STYLE_微调器);
mDialog.setUndeterminate(true);
mFlowerAdapter.reset();
mDialog.show();
if(getNetworkAvailability()){
getFeed();
}否则{
getFeedFromDatabase();
}
}
私有void getFeedFromDatabase(){
mDatabase.fetchFlowers(this);
}
私有void configViews(){
mReload=(按钮)findviewbyd(R.id.reload);
mRecyclerView=(RecyclerView)findViewById(R.id.RecyclerView);
mRecyclerView.setHasFixedSize(true);
mrecycleView.setRecycledViewPool(新的RecycleView.RecycledViewPool());
mRecyclerView.setLayoutManager(新的LinearLayoutManager(getApplicationContext(),LinearLayoutManager.VERTICAL,false));
mFlowerAdapter=新的花适配器(此);
mrecycerview.setAdapter(mFlowerAdapter);
}
@凌驾
公共void onClick(内部位置){
}
public-void-getFeed(){
调用listCall=mManager.getFlowerService().getAllFlowers();
enqueue(新的回调函数(){
@凌驾
公共void onResponse(调用、响应){
if(response.issusccessful()){
List-flowerList=response.body();
对于(int i=0;i}
您不应该从活动或片段调用db和网络。尝试学习MVVM体系结构,并使用ViewModel存储来自数据库或网络的数据。你可能会花很多精力让你的应用程序工作,但它仍然会导致崩溃(特别是在你引入fragment并从那里调用db和API之后)。您需要在配置更改期间处理数据状态。听这个演讲,开始写干净的代码


您得到的错误是因为您将错误的参数传递到适配器构造函数“new FlowerAdapter((FlowerAdapter.FlowerClickListener)this)”中。如果要将侦听器传递给适配器,则需要传递实现侦听器的类:activity-然后传递getActivity(),或者片段“this”-然后使片段实现FlowerAdapter.FlowerClickListener。请注意,当片段未附加到activity时,它可以为null,例如,配置更改。

谢谢,我刚刚将实现FlowerAdapter.FlowerClickListener、FlowerFetchListener添加到片段中,它成功了。