Java 如何在android中从另一个片段调用一个片段方法

Java 如何在android中从另一个片段调用一个片段方法,java,android,android-fragments,Java,Android,Android Fragments,在我的应用程序中,我希望活动中有2个片段。为了显示这两个片段,我使用了ViewPager 在Fragmenttwo中,我有一个方法,我想从Fragmentone调用这个方法 片段2中的方法: public void getComments() { JsonObject requestBean = new JsonObject(); requestBean.addProperty("entityType", 4); requestBean.addProperty("rev

在我的应用程序中,我希望
活动中有2个
片段。为了显示这两个
片段
,我使用了
ViewPager

Fragment
two
中,我有一个方法,我想从
Fragment
one
调用这个方法

片段2中的方法:

public void getComments() {

    JsonObject requestBean = new JsonObject();
    requestBean.addProperty("entityType", 4);
    requestBean.addProperty("reviewType", 5);
    requestBean.addProperty("reviewUserType", 2);
    requestBean.addProperty("entityID", serialID);
    requestBean.addProperty("celebrityId", 0);
    requestBean.addProperty("pageIndex", 1);
    requestBean.addProperty("pageSize", 10);

    InterfaceApi api = ApiClient.getClient().create(InterfaceApi.class);
    Call<CommentResponse> call = api.getComments(token, requestBean);

    call.enqueue(new Callback<CommentResponse>() {
        @Override
        public void onResponse(Call<CommentResponse> call, Response<CommentResponse> response) {
            if (response.body().getData() != null) {
                if (response.body().getData().size() > 0) {
                    reviewSerialFrag_NoComment.setText("");
                } else {
                    reviewSerialFrag_NoComment.setText(context.getResources().getString(R.string.noReviews));
                }
                commentModel.clear();
                commentModel.addAll(response.body().getData());
                commentsListAdapter.notifyDataSetChanged();
                reviewSerialFrag_newsCommentsRecyclerView.setAdapter(commentsListAdapter);

                reviewSerialFrag_newsCommentsUserTypeText.setText(userTypeStr);
                reviewSerialFrag_newsCommentsReviewTypeText.setText(reviewTypeStr);

                reviewSerialFrag_Progress.setVisibility(View.GONE);
            }
        }

        @Override
        public void onFailure(Call<CommentResponse> call, Throwable t) {
            reviewSerialFrag_Progress.setVisibility(View.GONE);
        }
    });
}
片段
two中显示此行的错误:

reviewSerialFrag_NoComment.setText(context.getResources().getString(R.string.noReviews));

我怎样才能修好它?请帮助我,无需调用
getResources()
方法。只需
getString(R.string.noReviews)
就可以了。

获取fragment的实例

ExampleFrag frag=(ExampleFrag)getActivity().getSupportFragmentManager().findFragmentById(R.id.fragment2); 
然后调用任何方法

 frag.myMethod();  

像普通类一样使用片段确实是个坏主意。即使您希望传递简单的数据,您也可以使用和实例或使用捆绑包

如果您的方法不依赖于片段本身,请创建一个两个片段共享的单独实用程序类。只需向它传递一个上下文,这样它就可以解析其中的一些变量


在片段中的单独类中分离UI操作。创建此实用程序类的侦听器并更改片段中的可视状态。

如果您使用的是viewpager,我假设一次只能看到一个片段。那么,为什么要对用户不可见的另一个片段调用方法呢?(实现的问题是,您不能保证有一个片段实例来执行该方法)@Juan。你能给我发个密码吗?我是业余爱好者。请你重新考虑一下这个应用程序,这不是一个两行改变的问题。将核心功能放在活动中,让片段从中提取需要在屏幕上显示的信息。使用fragment.getActivity()获取活动的实例。
ExampleFrag frag=(ExampleFrag)getActivity().getSupportFragmentManager().findFragmentById(R.id.fragment2); 
 frag.myMethod();