Неожиданный вылет (Android, java)

Запускал аналогичный код, для проверки работы в отельном мини проекте - подобных вылетов и ошибок не было. Ошибка основная кидается на строчку: FileInputStream in = openFileInput(read); Код переписывал уже множество раз, адреса файлов выносил в отельные переменные, сравнения перемещал в отдельные методы. Я сбился с толку в чем может быть проблема.

String read;
    public void LoadText() throws IOException {
        String line;
        if (getControl().equalsIgnoreCase("котлисаслон")) {
            read = "text_true_dio_1.txt";
        } else if (getControl().equalsIgnoreCase("распределитель")) {
            read = "text_true_dio_2.txt";
        } else if (getControl().equalsIgnoreCase("стенографистка")) {
            read = "text_true_dio_3.txt";
        } else if (getControl().equalsIgnoreCase("простокваша")) {
            read = "text_true_dio_4.txt";
        }
        FileInputStream in = openFileInput(read);
        InputStreamReader inputStreamReader = new InputStreamReader(in);
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
        StringBuilder sb = new StringBuilder();

        while ((line = bufferedReader.readLine()) != null) {
            sb.append(line);
            List_String_true.add(line);
                if (getControl().equalsIgnoreCase("котлисаслон")) {
                    thru_list_1.add(line);
                } else if (getControl().equalsIgnoreCase("распределитель")) {
                    thru_list_2.add(line);
                } else if (getControl().equalsIgnoreCase("стенографистка")) {
                    thru_list_3.add(line);
                } else if (getControl().equalsIgnoreCase("простокваша")) {
                    thru_list_4.add(line);
                }
            }
            inputStreamReader.close();
    }
2021-02-06 15:21:43.245 6706-6706/freijer.app.dropwords E/AndroidRuntime: FATAL EXCEPTION: main
    Process: freijer.app.dropwords, PID: 6706
    java.lang.IllegalStateException: Could not execute method for android:onClick
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:402)
        at android.view.View.performClick(View.java:7125)
        at android.view.View.performClickInternal(View.java:7102)
        at android.view.View.access$3500(View.java:801)
        at android.view.View$PerformClick.run(View.java:27336)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397)
        at android.view.View.performClick(View.java:7125) 
        at android.view.View.performClickInternal(View.java:7102) 
        at android.view.View.access$3500(View.java:801) 
        at android.view.View$PerformClick.run(View.java:27336) 
        at android.os.Handler.handleCallback(Handler.java:883) 
        at android.os.Handler.dispatchMessage(Handler.java:100) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7356) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.indexOf(int)' on a null object reference
        at android.app.ContextImpl.makeFilename(ContextImpl.java:2650)
        at android.app.ContextImpl.openFileInput(ContextImpl.java:599)
        at android.content.ContextWrapper.openFileInput(ContextWrapper.java:206)
        at freijer.app.dropwords.GameStart.LoadText(GameStart.java:2258)
        at freijer.app.dropwords.GameStart.LetsGo(GameStart.java:888)
        at java.lang.reflect.Method.invoke(Native Method) 
        at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397) 
        at android.view.View.performClick(View.java:7125) 
        at android.view.View.performClickInternal(View.java:7102) 
        at android.view.View.access$3500(View.java:801) 
        at android.view.View$PerformClick.run(View.java:27336) 
        at android.os.Handler.handleCallback(Handler.java:883) 
        at android.os.Handler.dispatchMessage(Handler.java:100) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7356) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 

Ответы (2 шт):

Автор решения: Вася Воронцов

Из строки:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.indexOf(int)' on a null object reference

Из документации:

Parameter name - String: The name of the file to open; can not contain path separators.

openFileInput() производит поиск разделителей в переданной строке, но здесь строка является null, что и приводит к ошибке.

На самом деле, Вашей переменной read может не быть присвоено значение из-за отсутствия else в блоке сравнения (там только else if), это стоит исправить. Например, так:

String read = "";
//Возможно, выбросит FileNotFoundException
→ Ссылка
Автор решения: Arty Morris

Добавь в описание процедуры NullPointerException, как исключение. Можешь код, где это происходит, обернуть в try ... catch

→ Ссылка