Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 应用程序持续崩溃,原因是广播接收器_Java_Android_Android Studio_Broadcast - Fatal编程技术网

Java 应用程序持续崩溃,原因是广播接收器

Java 应用程序持续崩溃,原因是广播接收器,java,android,android-studio,broadcast,Java,Android,Android Studio,Broadcast,有人能帮我调试代码的哪一部分是它不断崩溃的原因吗?我一直在试图找出哪一部分是错的,我在网上得到了代码并自己应用了它,但在这一部分我遇到了麻烦,因为它一直在说应用程序是错的 我创建了不同的函数来找出哪个部分是错误的,谢谢 在我的日志里写着: 原因:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“java.lang.String java.lang.String.intern()” 主要活动 import androidx.appcompat.app.Ap

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

在我的日志里写着: 原因:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“java.lang.String java.lang.String.intern()”

主要活动

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();
    }
}
送货服务:

import android.annotation.TargetApi;
import android.app.Service;
import android.content.Intent;
import android.os.Build;
import android.os.IBinder;
import android.util.Log;

public class DeliveryService extends Service {

    private String LOG_TAG = null;


    @Override
    public void onCreate() {
        super.onCreate();
        LOG_TAG = this.getClass().getSimpleName();
        Log.i(LOG_TAG, "In onCreate");
    }
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.i(LOG_TAG, "In onStartCommand");
        new Thread(new Runnable() {
            public void run() {
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                Intent broadcastIntent = new Intent();
                broadcastIntent.setAction(MainActivity.status1);
                sendBroadcast(broadcastIntent);
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                broadcastIntent.setAction(MainActivity.status2);
                sendBroadcast(broadcastIntent);
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                broadcastIntent.setAction(MainActivity.status3);
                sendBroadcast(broadcastIntent);
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                broadcastIntent.setAction(MainActivity.status4);
                sendBroadcast(broadcastIntent);
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                broadcastIntent.setAction(MainActivity.status5);
                sendBroadcast(broadcastIntent);
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                broadcastIntent.setAction(MainActivity.status6);
                sendBroadcast(broadcastIntent);
            }
        }).start();
        return START_REDELIVER_INTENT;
    }

    @Override
    public IBinder onBind(Intent intent) {
        Log.i(LOG_TAG, "In onBind");
        return null;
    }

    @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
    @Override
    public void onTaskRemoved(Intent rootIntent) {
        super.onTaskRemoved(rootIntent);
        Log.i(LOG_TAG, "In onTaskRemoved");
    }

    public void onDestroy() {
        super.onDestroy();
        Log.i(LOG_TAG, "In onDestroy");
    }
}

谢谢。

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

您能否显示更多日志,以查看问题的确切位置