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

时间:2020-01-26 02:46:17

标签: java android

我需要从一个片段中调用一个活动中的方法,我什至无法实例化片段中的活动,我不知道该如何解决这个问题。我需要从属于片段的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)

3 个答案:

答案 0 :(得分:0)

如果您的活动中有方法 onUpdate ,并且想从片段中调用活动方法,请在以下片段中按需调用它。

(((YouActivityName)getActivity())。onUpdate();

请务必替换您的活动名称。

答案 1 :(得分:0)

img_search.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent displayFlights = new Intent(getActivity(), SelectFlight.class);
            startActivity(displayFlights);
        }
    });

答案 2 :(得分:0)

您可以创建onUpdate()static

您的方法标题应如下所示:

public static void onUpdate() {
   // your code
}
相关问题