【发布时间】:2014-07-20 15:18:10
【问题描述】:
仅供参考,我一直在尝试关注这个问题的答案
Basic Communication between two fragments
我在 ViewPager Adapter 和 Actionbar 中有 2 个 Fragments。
我所拥有的是一个片段生成一些数据,这些数据可以(如果选择)插入到 SQLite 表中。
第二个Fragment 只是显示表中的所有数据,但是我正在尝试进行一些通信,即Fragment 1 将数据插入SQLite 表中。调用Fragment 2 以刷新其选择查询(就像再次查询一样)以自动显示最新数据。目前这是通过一个按钮手动完成的,我觉得这不是很好。
这是我在Fragment 1 中的interface
onNumbersSavedListener mCallback;
public interface onNumbersSavedListener
{
public void RequestQueryRefresh();
}
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
try
{
mCallback = (onNumbersSavedListener) activity;
}
catch(ClassCastException e)
{
e.printStackTrace();
}
}
这是主要的Activity,它包含ViewPager并实现interface
public class MainActivity extends FragmentActivity implements TabListener, GenerateFragment.onNumbersSavedListener
这是我遇到的主要问题,我没有片段的 ID,上面提到的链接中提到的答案确实如此。
@Override
public void RequestQueryRefresh() {
// TODO Auto-generated method stub
}
TLDR:我只是在寻找一种简单而干净的方法,因为一旦Fragment 1 保存到 DB 中,片段 2 通过重新运行其查询来更新其列表视图。
【问题讨论】:
-
我相信解决您问题的最佳方法是使用 EventBus 作为 otto!
-
我尝试了 Luksprog 指出的答案。我得到空指针异常。我会调查什么是 eventbus 并试一试
-
我编辑了我的答案以纠正一些错误:)!你会喜欢的,EventBus 是一种向听众发送事件的简单方法,广播风格但更灵活! lib 其他类型,对此类事件有很好的解释EventBus
标签: java android android-fragments android-viewpager android-sqlite