Java 如何从片段调用活动方法?

Java 如何从片段调用活动方法?,java,android,Java,Android,我需要从片段中调用活动中的方法,我甚至不能在片段中恢复活动,我不知道如何解决这个问题。我需要从片段的一部分onClick调用活动的方法,因为我需要更新一个值,因为它已更改(例如:值为1,onClick后值为2,但活动未更新) 这是活动中的方法: public void onUpdate(){ //setCount.setText(Integer.toString(new Database(this).getCountCart(FirebaseAuth.getInstance().

我需要从片段中调用活动中的方法,我甚至不能在片段中恢复活动,我不知道如何解决这个问题。我需要从片段的一部分onClick调用活动的方法,因为我需要更新一个值,因为它已更改(例如:值为1,onClick后值为2,但活动未更新)

这是活动中的方法:

   public void onUpdate(){

    //setCount.setText(Integer.toString(new Database(this).getCountCart(FirebaseAuth.getInstance().getCurrentUser().getUid())));
    setCount.setText(Integer.toString(new Database(this).getTotalCount(FirebaseAuth.getInstance().getCurrentUser().getUid())));

    cart = new Database(this).getCarts(FirebaseAuth.getInstance().getCurrentUser().getUid());
    int total = 0;
    for(OrderModel order:cart)
        total+=(Integer.parseInt(String.valueOf(order.getPret()))) *(order.getCantitate());
    Locale locale = new Locale("ro","RO");
    NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
    totalPrice.setText(fmt.format(total));

}
下面是我试图从片段中调用它的地方:

fragmentItem.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
  new Database(getActivity().getBaseContext()).increaseCart(FirebaseAuth.getInstance().getCurrentUser().getUid(),fragmentUnuModel.getDenumire());
  food.onUpdate();
}
下面是错误:

  java.lang.NullPointerException: Attempt to invoke virtual method 'void com.cosnila.orderme.Food.onUpdate()' on a null object reference
    at com.cosnila.orderme.Fragments.FragmentUnu$1$1.onClick(FragmentUnu.java:123)

如果您的活动中有方法onUpdate,并且希望从片段中调用活动方法,请在需要时在片段中按如下方式调用它

((YouActivityName)getActivity()).onUpdate()

确保替换活动名称。

您可以将onUpdate()设置为static

img_search.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent displayFlights = new Intent(getActivity(), SelectFlight.class);
            startActivity(displayFlights);
        }
    });
您的方法头应该如下所示:

public static void onUpdate() {
   // your code
}

此方法在活动中没有什么特殊之处。您可以在Utils类中将其设置为静态方法。@Josh我有两个需要设置的文本视图,具体如何设置?请在
新数据库((getContext())…)
中尝试该参数。你设置了你的rootview吗?那么这是你片段的宿主活动吗?@Josh片段在活动中,但我有一个ViewPagerAdapter来创建我的片段。请不要只发布代码作为答案,而是解释你的代码做什么以及它如何解决问题。带有解释的答案通常质量更高,更容易吸引选票。