应用程序不断崩溃广播接收器的原因

时间:2021-05-04 13:25:54

标签: java android android-studio broadcast

谁能帮我调试代码的哪一部分是它不断崩溃的原因?我一直在试图找出哪个部分是错误的,我在网上获取了代码并自己应用了它,但是我在这部分遇到了麻烦,它一直说 app 是 我创建了不同的函数来找出哪个部分有问题,谢谢。

在我的 logcat 中它说: 引起:java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.intern()' on a null object reference

主要活动

const [films, setFilms] = useState([]);
const [page, setPage] = useState(1);
const [isLoad, setIsLoad] = useState(false);

const incrementPage = () => {
  setPage(page + 1);
};

const fetchData = async () => {
  setIsLoad(true);
  const response = await fetch(
    `${baseURL}movie/popular?api_key=${API_KEY}&language=en-US&page=${page}`
  ).then((res) => res.json());
  setFilms([...films, ...response.results]);
  setIsLoad(false);
  incrementPage();
};

useEffect(() => {
  fetchData();
}, []);

送货服务:

import androidx.appcompat.app.AppCompatActivity;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class MainActivity extends AppCompatActivity {

    private TextView tv_time;
    private TextView tv_amount;
    private ImageView iv_status_01;
    private ImageView iv_status_02;
    private ImageView iv_status_03;
    private ImageView iv_status_04;
    private ImageView iv_status_05;
    private ImageView iv_status_06;
    private ImageView iv_complete;



    private Intent serviceInent = null;


    public static String status1;
    public static String status2;
    public static String status3;
    public static String status4;
    public static String status5;
    public static String status6;

    private IntentFilter intentFilter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        intentFilter = new IntentFilter();
        intentFilter.addAction(status1);
        intentFilter.addAction(status2);
        intentFilter.addAction(status3);
        intentFilter.addAction(status4);
        intentFilter.addAction(status5);
        intentFilter.addAction(status6);

        init();
    }

    private void init(){
        tv_amount = findViewById(R.id.tv_amount);
        tv_time = findViewById(R.id.tv_time);

        Date date = new Date();
        Locale philippineLocale = new Locale.Builder().setLanguage("en").setRegion("PH").build();

        tv_time.setText(getDate(date, philippineLocale));

        tv_amount.setText("Total Amount :\n500.00");
        serviceInent = new Intent(this, DeliveryService.class);
        startService(new Intent(this, DeliveryService.class));
    }

    private String getDate(Date date, Locale locale) {
        DateFormat formatter = new SimpleDateFormat("EEEE \nMMMM dd, yyyy", locale);
        return formatter.format(date);
    }
    @Override
    public void onResume() {
        super.onResume();
        registerReceiver(mReceiver, intentFilter);
    }

    private BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(status1)) {
                iv_status_01.setImageResource(R.drawable.box_check);
            }
            else if (intent.getAction().equals(status2)) {
                iv_status_02.setImageResource(R.drawable.box_check);
            }
            else if (intent.getAction().equals(status3)) {
                iv_status_03.setImageResource(R.drawable.box_check);
            }
            else if (intent.getAction().equals(status4)) {
                iv_status_04.setImageResource(R.drawable.box_check);
            }
            else if (intent.getAction().equals(status5)) {
                iv_status_05.setImageResource(R.drawable.box_check);
            }
            else if (intent.getAction().equals(status5)) {
                iv_status_06.setImageResource(R.drawable.box_check);
            }
        }
    };

    @Override
    protected void onPause() {
        unregisterReceiver(mReceiver);
        super.onPause();
    }
}

谢谢。

1 个答案:

答案 0 :(得分:0)

您应该初始化用作操作的字符串(如status1);否则,将抛出 NullProinterException。