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