簡體   English   中英

如何在 Android Studio 的 Activity 中使用 requireActivity()

[英]How to use requireActivity() in an Activity in Android Studio

我正在嘗試制作 android 應用程序。 但是requireActivity()給出了這個錯誤

無法解析“ProductDetailActivity”中的方法“requireActivity”

但如果我把它放在一個片段中,它不會出錯。 我正在嘗試將用戶添加到購物車的東西放入 firebase 實時數據庫。 請幫助我,我是 Android 的新手。 我的代碼:

產品詳情Activity.java

package com.example.shoppingcart.views;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.ViewModelProvider;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.example.shoppingcart.R;
import com.example.shoppingcart.adapters.ShopListAdapter;
import com.example.shoppingcart.databinding.FragmentProductDetailBinding;
import com.example.shoppingcart.viewmodels.ShopViewModel;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.UUID;

public class ProductDetailActivity extends AppCompatActivity {
    FragmentProductDetailBinding fragmentProductDetailBinding;
    ShopViewModel shopViewModel;
    private Button addToCartButton;
    private ImageView productImage;
    private TextView productname,productprice,productcategory;
    private String productID="";
    UUID uuid = UUID.randomUUID();
    String randomUUIDString = uuid.toString().trim();
    Context context;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_product_detail);
        productID=getIntent().getStringExtra("pid");

        addToCartButton=(Button) findViewById(R.id.addToCartButton);
        productImage=(ImageView) findViewById(R.id.productImageView);
        productname=(TextView) findViewById(R.id.productNameTextView);
        productprice=(TextView) findViewById(R.id.productTotalPriceTextView);
        productcategory=(TextView) findViewById(R.id.Category);



        addToCartButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                addingToCartList();
            }
        });
    }

    
    private void addingToCartList() {
        String saveCurrentDate,saveCurrentTime;

        Calendar calForDate = Calendar.getInstance();
        SimpleDateFormat currentDate = new SimpleDateFormat("MMM dd, yyyy");
        saveCurrentDate = currentDate.format(calForDate.getTime());

        SimpleDateFormat currentTime = new SimpleDateFormat("HH:mm:ss a");
        saveCurrentTime = currentTime.format(calForDate.getTime());

        final DatabaseReference cartListRef= FirebaseDatabase.getInstance().getReference().child("Cart List");

        final HashMap<String, Object> cartMap=new HashMap<>();
        cartMap.put("pid",productID);
        cartMap.put("pname",productname.getText().toString());
        cartMap.put("pprice",productprice.getText().toString());
        cartMap.put("pcategory",productcategory.getText().toString());
        cartMap.put("time",saveCurrentTime);
        cartMap.put("date",saveCurrentDate);

        cartListRef.child("User View").child(randomUUIDString)
                .child("Products").child(productID)
                .updateChildren(cartMap)
                .addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if(task.isSuccessful()) {
                            cartListRef.child("Admin View").child(randomUUIDString)
                                    .child("Products").child(productID)
                                    .updateChildren(cartMap)
                                    .addOnCompleteListener(new OnCompleteListener<Void>() {
                                        @Override
                                        public void onComplete(@NonNull Task<Void> task) {
                                            if(task.isSuccessful()) {
                                                Toast.makeText(ProductDetailActivity.this,"Added to Cart",Toast.LENGTH_SHORT).show();
                                            }
                                        }
                                    });
                        }
                    }
                });
    }



    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {


        shopViewModel = new ViewModelProvider(requireActivity()).get(ShopViewModel.class);
        fragmentProductDetailBinding.setShopViewModel(shopViewModel);
    }

}

requireActivity()是 Fragment 的一個方法。 如果您需要在 Activity 中使用 Activity object,請使用this命令:

shopViewModel = new ViewModelProvider(this).get(ShopViewModel.class);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM