Android 每次创建片段时从活动中检索数据
活动Android 每次创建片段时从活动中检索数据,android,android-fragments,android-intent,interface,fragment,Android,Android Fragments,Android Intent,Interface,Fragment,活动 public class GroupesActivity extends BaseActivity { SelectedBundle selectedBundle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_groupes);
public class GroupesActivity extends BaseActivity {
SelectedBundle selectedBundle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_groupes);
sectionsPagerAdapter = new GroupPagerAdapter(this, getSupportFragmentManager());
viewPager.setAdapter(sectionsPagerAdapter);
tabs.setupWithViewPager(viewPager);
}
private void getAllGroup() {
// api call retrive data
// send data using interface on response
// set data selectedBundle.onBundleSelect(isVisible,calanderModelList,groupModelList,eventModelList);
}
public void setOnBundleSelected(SelectedBundle selectedBundle) {
this.selectedBundle = selectedBundle;
}
public interface SelectedBundle {
void onBundleSelect(boolean isVisible, List<CalanderModel> calanderModelList, List<GroupModel> groupModelList, List<EventModel> eventModelList);
}
}
问题
当我刷这个双簧管碎片时,在选项卡视图中有三个碎片
然后在这个fragmnet中再次出现,没有调用接口,我
无法从活动中获取数据
如何从其父活动再次获取该数据,我只需要
在每次创建视图时从活动中检索该数据
非常感谢;)在片段中使用
setMenuVisibility()
方法来修复问题
//In fragments
@Override
public void setMenuVisibility(final boolean isVisible) {
super.setMenuVisibility(isVisible);
if (isVisible) {
//visible to user- do ur stuff
((GroupesActivity) getActivity()).setOnBundleSelected(new
GroupesActivity.SelectedBundle() {
@Override
public void onBundleSelect(boolean isVisible, List<CalanderModel>
calanderModelListtt, List<GroupModel> groupModelList, List<EventModel>
eventModelList) {
Log.e("retrive data","data")
}
});
}
}
//在片段中
@凌驾
public void setMenuVisibility(最终布尔值可见){
super.setMenuVisibility(可见);
如果(可见){
//对用户可见-做你的事
((GroupsActivity)getActivity()).setOnBundleSelected(新建)
GroupesActivity.SelectedBundle(){
@凌驾
public void onbundle选择(布尔值可见,列表
calanderModelListtt,列表组ModelList,列表
事件模型列表){
Log.e(“检索数据”、“数据”)
}
});
}
}
如果您遇到任何问题,以下链接可能会有所帮助:
使用片段中的
setMenuVisibility()
方法修复问题
//In fragments
@Override
public void setMenuVisibility(final boolean isVisible) {
super.setMenuVisibility(isVisible);
if (isVisible) {
//visible to user- do ur stuff
((GroupesActivity) getActivity()).setOnBundleSelected(new
GroupesActivity.SelectedBundle() {
@Override
public void onBundleSelect(boolean isVisible, List<CalanderModel>
calanderModelListtt, List<GroupModel> groupModelList, List<EventModel>
eventModelList) {
Log.e("retrive data","data")
}
});
}
}
//在片段中
@凌驾
public void setMenuVisibility(最终布尔值可见){
super.setMenuVisibility(可见);
如果(可见){
//对用户可见-做你的事
((GroupsActivity)getActivity()).setOnBundleSelected(新建)
GroupesActivity.SelectedBundle(){
@凌驾
public void onbundle选择(布尔值可见,列表
calanderModelListtt,列表组ModelList,列表
事件模型列表){
Log.e(“检索数据”、“数据”)
}
});
}
}
如果您遇到任何问题,以下链接可能会有所帮助:
谢谢您的快速回答,但它给出了NullPointerException:在接口方法上,SetOnBundleSelected处有一个空对象引用,您可以共享logcat日志吗?问题是,当我通过滑动tabview进入片段3,再次进入它创建的片段1时,该接口方法没有调用djava.lang.NullPointerException:尝试调用com.illumaworks.Whenis.fragments.AllGroupsFragments.setMenuVisibility(AllGroupsFragments.java:96)上的空对象引用上的虚拟方法“void com.activity.GroupsActivity.setOnBundleSelected(com.activity.GroupsActivity$SelectedBundle)”当片段创建时,是否有其他方法可以再次从父活动获取数据?感谢您的快速回答,但它给出了NullPointerException:在接口方法上,SetOnBundleSelected处有一个空对象引用,您可以共享logcat日志吗?问题是,当我通过滑动tabview进入片段3,再次进入它创建的片段1时,该接口方法没有调用djava.lang.NullPointerException:尝试调用在com.illumaworks.Whenis.fragments.AllGroupsFragments.setMenuVisibility(AllGroupsFragments.java:96)上的空对象引用上的虚拟方法“void com.activity.GroupsActivity.setOnBundleSelected(com.activity.GroupsActivity$SelectedBundle)”,是否有其他方法在片段创建时再次从父活动获取数据?
//In fragments
@Override
public void setMenuVisibility(final boolean isVisible) {
super.setMenuVisibility(isVisible);
if (isVisible) {
//visible to user- do ur stuff
((GroupesActivity) getActivity()).setOnBundleSelected(new
GroupesActivity.SelectedBundle() {
@Override
public void onBundleSelect(boolean isVisible, List<CalanderModel>
calanderModelListtt, List<GroupModel> groupModelList, List<EventModel>
eventModelList) {
Log.e("retrive data","data")
}
});
}
}