从Android中的片段刷新活动
我跟着。我想刷新片段中的活动。我在工具栏中有后退按钮,用于片段到活动的通信 下面是我的按钮侦听器和刷新活动的代码。我将其包含在片段类中:从Android中的片段刷新活动,android,android-studio,android-fragments,handler,Android,Android Studio,Android Fragments,Handler,我跟着。我想刷新片段中的活动。我在工具栏中有后退按钮,用于片段到活动的通信 下面是我的按钮侦听器和刷新活动的代码。我将其包含在片段类中: final Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar); toolbar.setNavigationIcon(R.drawable.ic_arrow_back_black_24dp); toolbar.setNavigationOnClickListe
final Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
toolbar.setNavigationIcon(R.drawable.ic_arrow_back_black_24dp);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Handler().post(new Runnable() {
@Override
public void run()
{
Intent intent = getActivity().getIntent();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_NO_ANIMATION);
getActivity().overridePendingTransition(0, 0);
getActivity().finish();
getActivity().overridePendingTransition(0, 0);
startActivity(intent);
}
});
}
});
这很好,但它完全可以重新加载应用程序。这里可以做些什么,以避免重新加载操作,只刷新活动?使用callbackinterface从片段与活动通信,不要使用Intent.FLAG_activity_CLEAR_TOP | Intent.FLAG_activity_NEW_任务,因为它将清除堆栈 前 把这个放在你的碎片里 并将refreshMyData放入您的活动中
如果不起作用,请告诉我定义在活动中执行刷新操作的方法
public void refreshMyData(){
// do your operations here.
}
在onClick方法中:
final Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
toolbar.setNavigationIcon(R.drawable.ic_arrow_back_black_24dp);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// If you use a generic toolbar you have to check instance of getActivity before cast.
((YourActivity)getActivity()).refreshMyData();
}
});
编辑:我重构了代码。我认为您不需要在onClick方法中发布。您需要使用接口在片段和活动之间进行通信好的,谢谢您的建议。让我试试。移除覆盖的转换线,看看它是否工作。这对他有什么帮助?他想引用活动好的,让我检查一下。@SatanPandeya您应该使用无动画标志来删除活动动画。
public void refreshMyData(){
//Code to refresh Activity Data hear
}
public void refreshMyData(){
// do your operations here.
}
final Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
toolbar.setNavigationIcon(R.drawable.ic_arrow_back_black_24dp);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// If you use a generic toolbar you have to check instance of getActivity before cast.
((YourActivity)getActivity()).refreshMyData();
}
});