我在一个活动中有多个片段。每个片段都必须显示一些使用REST从服务器获取的数据。我一直在用IntentService
实现REST请求的相应接收器。现在我可以通过在活动中将片段作为内部类来实现这一点。
我对内部类的问题是,在方向更改时,会抛出一个错误,例如“无法实例化片段,没有空构造函数”。对于这个问题,在搜索时我发现答案要么使内部类静态,要么为Fragment创建一个独立的公共类。我仍然不明白为什么会在方向改变时发生这种情况。
现在,如果我采用为Fragment创建单独的独立类的方法,我将不得不传递活动对象来执行startService
和registerReceiver
。我不想使用AsyncTask
,因为在我的应用程序中,我在单个片段中执行多个REST请求,IntentService
允许在每个请求后发送广播,这样我就不必等到所有请求都完成后才开始加载屏幕。而且我认为将活动对象传递给片段是不可行的。片段是否应尽可能与活动松散耦合,以便在多个活动中使用相同的片段?如果是,那么解决这个问题的最佳方法是什么?