从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();
        }
    });