0

This is my code

package com.packages.digifarm.ui.dashboard;

import android.content.Intent;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.cardview.widget.CardView;
import androidx.fragment.app.Fragment;

import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.packages.digifarm.KelembabanTanahAnalisisActivity;
import com.packages.digifarm.KelembabanUdaraAnalisisActivity;
import com.packages.digifarm.LevelKetinggianAirAnalisisActivity;
import com.packages.digifarm.R;
import com.packages.digifarm.SuhuAnalisisActivity;

public class DashboardFragment extends Fragment {

    TextView tv_water_level_value, tv_temperature_value, tv_moisture_value, tv_humidity_value;
    TextView tv_water_level_stats, tv_temperature_stats, tv_moisture_stats, tv_humidity_stats, tv_weather_stats;
    ImageView ic_water, ic_weather_stats;
    TextView tv_btn_show_detail_water_level, tv_btn_show_detail_soil_moisture, tv_btn_show_detail_temperature, tv_btn_show_detail_humidity;
    CardView water_indicator;
    ViewGroup.LayoutParams layoutParams;

    DatabaseReference Reference;
    String water_level_value, temperature_value, moisture_value, humidity_value, light_value;

    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_dashboard, container, false);

        tv_water_level_value = view.findViewById(R.id.tv_water_level_value);
        tv_temperature_value = view.findViewById(R.id.tv_temperature_value);
        tv_moisture_value = view.findViewById(R.id.tv_moisture_value);
        tv_humidity_value = view.findViewById(R.id.tv_humidity_value);

        tv_water_level_stats = view.findViewById(R.id.tv_water_level_stats);
        tv_temperature_stats = view.findViewById(R.id.tv_temperature_stats);
        tv_moisture_stats = view.findViewById(R.id.tv_moisture_stats);
        tv_humidity_stats = view.findViewById(R.id.tv_humidity_stats);
        tv_weather_stats = view.findViewById(R.id.tv_weather_stats);

        water_indicator = view.findViewById(R.id.water_indicator);

        ic_water = view.findViewById(R.id.ic_water);
        ic_weather_stats = view.findViewById(R.id.ic_weather_stats);

        Reference = FirebaseDatabase.getInstance().getReference("Current Data");
        Reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                water_level_value = snapshot.child("Level Ketinggian Air").getValue().toString();
                temperature_value = snapshot.child("Suhu").getValue().toString();
                moisture_value = snapshot.child("Kelembaban Tanah").getValue().toString();
                humidity_value = snapshot.child("Kelembaban Udara").getValue().toString();
                light_value = snapshot.child("Cahaya").getValue().toString();

                tv_water_level_value.setText(water_level_value + "%");
                tv_temperature_value.setText(temperature_value + "°C");
                tv_moisture_value.setText(moisture_value + "%");
                tv_humidity_value.setText(humidity_value + "%");

                layoutParams = (ViewGroup.LayoutParams)water_indicator.getLayoutParams();
                layoutParams.height = Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, Integer.parseInt(water_level_value), getResources().getDisplayMetrics()));
                water_indicator.setLayoutParams(layoutParams);

                if(Integer.parseInt(water_level_value) < 30){
                    tv_water_level_value.setTextColor(getResources().getColor(R.color.red_danger));
                    tv_water_level_stats.setText("Tersisa Sedikit");
                    tv_water_level_stats.setTextColor(getResources().getColor(R.color.red_danger));
                    water_indicator.setCardBackgroundColor(getResources().getColor(R.color.red_danger));
                    ic_water.setImageResource(R.drawable.ic_water_red);
                }
                else if(Integer.parseInt(water_level_value) >= 30 && Integer.parseInt(water_level_value) <= 50){
                    tv_water_level_value.setTextColor(getResources().getColor(R.color.yellow_warning));
                    tv_water_level_stats.setText("Cukup Banyak");
                    tv_water_level_stats.setTextColor(getResources().getColor(R.color.yellow_warning));
                    water_indicator.setCardBackgroundColor(getResources().getColor(R.color.yellow_warning));
                    ic_water.setImageResource(R.drawable.ic_water_yellow);
                }
                else if(Integer.parseInt(water_level_value) > 50 && Integer.parseInt(water_level_value) <= 75){
                    tv_water_level_value.setTextColor(getResources().getColor(R.color.teal_200));
                    tv_water_level_stats.setText("Lumayan Banyak");
                    tv_water_level_stats.setTextColor(getResources().getColor(R.color.teal_200));
                    water_indicator.setCardBackgroundColor(getResources().getColor(R.color.teal_200));
                    ic_water.setImageResource(R.drawable.ic_water_blue);
                }
                else if(Integer.parseInt(water_level_value) > 75){
                    tv_water_level_value.setTextColor(getResources().getColor(R.color.teal_200));
                    tv_water_level_stats.setText("Lumayan Banyak");
                    tv_water_level_stats.setTextColor(getResources().getColor(R.color.teal_200));
                    water_indicator.setCardBackgroundColor(getResources().getColor(R.color.teal_200));
                    ic_water.setImageResource(R.drawable.ic_water_blue);
                }

                if(Integer.parseInt(temperature_value) < 26){
                    tv_temperature_value.setTextColor(getResources().getColor(R.color.teal_200));
                    tv_temperature_stats.setText("Dingin");
                    tv_temperature_stats.setTextColor(getResources().getColor(R.color.teal_200));
                }
                else if(Integer.parseInt(temperature_value) >= 26 && Integer.parseInt(temperature_value) <= 34){
                    tv_temperature_value.setTextColor(getResources().getColor(R.color.secondary_green));
                    tv_temperature_stats.setText("Normal");
                    tv_temperature_stats.setTextColor(getResources().getColor(R.color.secondary_green));
                }
                else if(Integer.parseInt(temperature_value) > 34){
                    tv_temperature_value.setTextColor(getResources().getColor(R.color.red_danger));
                    tv_temperature_stats.setText("Panas");
                    tv_temperature_stats.setTextColor(getResources().getColor(R.color.red_danger));
                }

                if(Integer.parseInt(humidity_value) < 20){
                    tv_humidity_value.setTextColor(getResources().getColor(R.color.red_danger));
                    tv_humidity_stats.setText("Kering");
                    tv_humidity_stats.setTextColor(getResources().getColor(R.color.red_danger));
                }

                else if(Integer.parseInt(humidity_value) >= 20 && Integer.parseInt(humidity_value) <= 40){
                    tv_humidity_value.setTextColor(getResources().getColor(R.color.yellow_warning));
                    tv_humidity_stats.setText("Kering");
                    tv_humidity_stats.setTextColor(getResources().getColor(R.color.yellow_warning));
                }
                else if(Integer.parseInt(humidity_value) > 40 && Integer.parseInt(humidity_value) <= 70){
                    tv_humidity_value.setTextColor(getResources().getColor(R.color.secondary_green));
                    tv_humidity_stats.setText("Normal");
                    tv_humidity_stats.setTextColor(getResources().getColor(R.color.secondary_green));
                }
                else if(Integer.parseInt(humidity_value) > 70){
                    tv_humidity_value.setTextColor(getResources().getColor(R.color.teal_200));
                    tv_humidity_stats.setText("Lembab");
                    tv_humidity_stats.setTextColor(getResources().getColor(R.color.teal_200));
                }

                if(Integer.parseInt(moisture_value) < 20){
                    tv_moisture_value.setTextColor(getResources().getColor(R.color.red_danger));
                    tv_moisture_stats.setText("Kering");
                    tv_moisture_stats.setTextColor(getResources().getColor(R.color.red_danger));
                }

                else if(Integer.parseInt(moisture_value) >= 20 && Integer.parseInt(moisture_value) <= 40){
                    tv_moisture_value.setTextColor(getResources().getColor(R.color.yellow_warning));
                    tv_moisture_stats.setText("Kering");
                    tv_moisture_stats.setTextColor(getResources().getColor(R.color.yellow_warning));
                }
                else if(Integer.parseInt(moisture_value) > 40 && Integer.parseInt(moisture_value) <= 70){
                    tv_moisture_value.setTextColor(getResources().getColor(R.color.secondary_green));
                    tv_moisture_stats.setText("Normal");
                    tv_moisture_stats.setTextColor(getResources().getColor(R.color.secondary_green));
                }
                else if(Integer.parseInt(moisture_value) > 70){
                    tv_moisture_value.setTextColor(getResources().getColor(R.color.teal_200));
                    tv_moisture_stats.setText("Lembab");
                    tv_moisture_stats.setTextColor(getResources().getColor(R.color.teal_200));
                }

                if(Integer.parseInt(light_value) < 100){
                    ic_weather_stats.setImageResource(R.drawable.ic_cuaca_cerah_berawan);
                    tv_weather_stats.setText("Cerah Berawan");
                    tv_weather_stats.setTextColor(getResources().getColor(R.color.yellow_warning));
                }
                else if(Integer.parseInt(light_value) >= 100){
                    ic_weather_stats.setImageResource(R.drawable.ic_cuaca_cerah);
                    tv_weather_stats.setText("Cerah");
                    tv_weather_stats.setTextColor(getResources().getColor(R.color.yellow_warning));
                }

            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });



        tv_btn_show_detail_water_level = view.findViewById(R.id.tv_btn_show_detail_water_level);
        tv_btn_show_detail_water_level.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(getActivity().getApplicationContext(), LevelKetinggianAirAnalisisActivity.class);
                startActivity(i);
            }
        });

        tv_btn_show_detail_soil_moisture = view.findViewById(R.id.tv_btn_show_detail_soil_moisture);
        tv_btn_show_detail_soil_moisture.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent k = new Intent(getActivity().getApplicationContext(), KelembabanTanahAnalisisActivity.class);
                startActivity(k);
            }
        });

        tv_btn_show_detail_humidity = view.findViewById(R.id.tv_btn_show_detail_humidity);
        tv_btn_show_detail_humidity.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent h = new Intent(getActivity().getApplicationContext(), KelembabanUdaraAnalisisActivity.class);
                startActivity(h);
            }
        });

        tv_btn_show_detail_temperature = view.findViewById(R.id.tv_btn_show_detail_temperature);
        tv_btn_show_detail_temperature.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent_data = new Intent(getActivity().getApplicationContext(), SuhuAnalisisActivity.class);
                startActivity(intent_data);
            }
        });

        // Inflate the layout for this fragment
        return view;
    }

    @Override
    public void onResume() {
        super.onResume();
        TextView txt_adds1 = getActivity().findViewById(R.id.txt_adds1);
        TextView txt_adds2 = getActivity().findViewById(R.id.txt_adds2);
        ImageView imgview_bg_appbar = getActivity().findViewById(R.id.imgview_bg_appbar);

        imgview_bg_appbar.setImageResource(R.drawable.bg_appbar_dashboard);

        txt_adds1.setText("Berkebun kini lebih mudah dengan");
        txt_adds2.setText("digiFarm");

        txt_adds2.setTextSize(TypedValue.COMPLEX_UNIT_PT, 12);
    }
}

I have an error like this

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.packages.digifarm, PID: 22408 java.lang.IllegalStateException: Fragment DashboardFragment{3b25dc9} (18f94298-cd27-4447-9c7e-59cb2f952f50) not attached to a context. at androidx.fragment.app.Fragment.requireContext(Fragment.java:900) at androidx.fragment.app.Fragment.getResources(Fragment.java:964) at com.packages.digifarm.ui.dashboard.DashboardFragment$1.onDataChange(DashboardFragment.java:82) at com.google.firebase.database.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:75) at com.google.firebase.database.core.view.DataEvent.fire(DataEvent.java:63) at com.google.firebase.database.core.view.EventRaiser$1.run(EventRaiser.java:55) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:237) at android.app.ActivityThread.main(ActivityThread.java:7948) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)

  • Have you seen these links? : [https://stackoverflow.com/questions/50257505/fragment-not-attached-to-a-context] and [https://stackoverflow.com/questions/51421865/java-lang-illegalstateexception-fragment-not-attached-to-a-context] – Zahra Ebrahimi Mar 11 '22 at 18:17

0 Answers0