

このようなエラーが出ます。どこがおかしいのでしょうか。

[code]

    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
    
[/code]

以下がコードとなっています。

[code]

    package com.example.tokoroshingo.myapplication;
    import android.content.Intent;
    import android.content.res.Resources;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.content.Context;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    public class FileActivity1 extends AppCompatActivity {
        private TextView textView;
        private EditText editText;
        private String fileName[] = new String[15] ;
        private int i;
        private Button buttonRead[] = new Button[15];
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_file1);
    
            textView = findViewById(R.id.text_view);
    
            for(i=0; i<15; i++){
                fileName[i] = "CH1_"+i+1+".txt";
                int viewId;
                String resViewName;
                resViewName = "button_ch" + i+1;
                viewId = getResources().getIdentifier(resViewName, "id", getPackageName());
                buttonRead[i] = findViewById(viewId);
                buttonRead[i].setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        String str = readFile(fileName[i]);
                        if (str != null) {
                            textView.setText(str);
                        } else {
                            textView.setText(R.string.read_error);
                        }
                        TextView textReceive1 = (TextView) findViewById(R.id.text_view1);
                        textReceive1.setText("CH"+ i);
                    }
                });
    
            }
    
            //  editText = findViewById(R.id.edit_text);
    
            Button return_file_Button1 = findViewById(R.id.return_file_button1);
            return_file_Button1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(getApplication(), SubActivity5.class);
                    startActivity(intent);
                }
            });
    
        }
    
        // ファイルを読み出し
        public String readFile(String file) {
            String text = null;
    
            try {
                FileInputStream in = openFileInput(file);
                BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
                String str = "";
                String tmp;
                while ((tmp = reader.readLine()) != null) {
                    str = str + tmp + "\n";
                }
                text = str;
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return text;
        }
    }
    
[/code]


CC BY-SA 4.0
2019-03-11T12:39:40.760
53366
2021-03-07T04:29:48.297
2021-03-07T04:29:48.297
3060
32502
question
java android xml
Androidアプリがボタンをクリックするだけで落ちてしまうてしまう


エラーメッセージ："java.lang.NullPointerException: Attempt to invoke virtual method
'void
android.widget.Button.setOnClickListener(android.view.View$OnClickListener)'
on a null object reference"  
[直訳]
空(null)ポインタ例外：android.widget.Button.setOnClickListenerメソッドを、空(null)オブジェクトへの参照に対して呼出そうとしたため

質問のコードで、setOnClickListenerを呼び出そうとしているのは

[code]

     buttonRead[i] = findViewById(viewId);
            buttonRead[i].setOnClickListener(new View.OnClickListener() {
    
[/code]

と

[code]

    Button return_file_Button1 = findViewById(R.id.return_file_button1);
        return_file_Button1.setOnClickListener(new View.OnClickListener() {
    
[/code]

の2か所ですから、

[code]

    findViewById(viewId);
    
[/code]

と

[code]

    findViewById(R.id.return_file_button1);
    
[/code]

の引数と返ってきた値を、それぞれPrintするようにすれば null が返ってきた箇所が特定できると思います。

それが、null object referenceが発生した原因です。  
まともなオブジェクト参照が返ってくるようにすれば、例外は発生しなくなるはずです。

がんばって、調べてみてください。


CC BY-SA 4.0
2019-03-12T06:23:03.140
53381
2019-03-12T06:23:03.140
217
53366
answer