마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

listviewadapter에서 NullPointerException 문제 (블루투스)

0 추천

retrofit을 이용하여 listview에 id, name과 id값을 얻는 버튼들이 쫙 펼쳐지는 앱을 현재 만들었습니다.(전부 string 값)

마지막으로 블루투스 연동과정에서 문제가 생기고 말았는데 어디가 문제인지는 알아도 왜인지 모르겠습니다ㅠㅠ 

MainActivity의 onCreate에 있는 버튼에 데이터를 send 해놓으면 블루투스의 led가 제대로 들어오는 등 작동합니다.

이걸 보면 다른 코드들은 이상이 없는데

listviewadapter에서 ouputstream으로 데이터를 보내려고 하면 자꾸만 오류가 납니다.

조금의 단서라도 좋으니 알려주시면 정말로 감사하겠습니다! 

제가 대체 무엇을 놓치고 있는 것 일까요ㅠㅠ??

 

 

로그캣:

2019-09-01 00:26:05.252 12123-12123/com.example.delistfire W/태그:: mThreadConnectedBluetooth = null (연결이 안되집니다?)
W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.delistfire.MainActivity$ConnectedBluetoothThread.write(java.lang.String)' on a null object reference
W/System.err: at com.example.delistfire.listviewAdapter$1.bluetoothsend(listviewAdapter.java:81)
W/System.err: at com.example.delistfire.listviewAdapter$1.onClick(listviewAdapter.java:73)
W/System.err: at android.view.View.performClick(View.java:6312)
W/System.err: at android.view.View$PerformClick.run(View.java:24811)
W/System.err: at android.os.Handler.handleCallback(Handler.java:794)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err: at android.os.Looper.loop(Looper.java:173)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6651)
W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:822)

 

 

listviewAdapter 문제부분 관련 코드 표시

public class listviewAdapter extends ArrayAdapter<ListViewItem> {
    ArrayList<ListViewItem> Lists;
    Context context;
    int resource;
    MainActivity.ConnectedBluetoothThread mThreadConnectedBluetooth;


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView==null){
            LayoutInflater layoutInflater=(LayoutInflater)getContext().getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            convertView=layoutInflater.inflate(R.layout.item_list,null,false);
        }
      final ListViewItem Lists=getItem(position);
      final EditText textid=(EditText)convertView.findViewById(R.id.editid);
      Button buttonorder = (Button) convertView.findViewById(R.id.button2);
      textid.setText(Lists.getId());
      textid.setClickable(false);



        buttonorder.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                bluetoothsend();
            }

            public void bluetoothsend() {
                final String idsend = textid.getText().toString();
                try {
                    mThreadConnectedBluetooth.write(idsend);
                }
                catch (Exception e){
                    Log.w("태그:","mThreadConnectedBluetooth = null (연결이 안되집니다?)");
                    e.printStackTrace();
                }

            }
        return convertView;
    }

}

 

 

 

MainActivity의 ConnectedBluetoothThread 클래스 

public class ConnectedBluetoothThread extends Thread {
    BluetoothSocket mmSocket;
    OutputStream mmOutStream = null;

    public ConnectedBluetoothThread(BluetoothSocket socket) {
        mmSocket = socket;

        try {
            mmOutStream = socket.getOutputStream();
        } catch (IOException e) {
            Log.w("태그:","소켓 연결 오류");
            e.printStackTrace();
        }

    }

    public void write(String txt) {
        byte[] bytes = txt.getBytes();
        try {
            mmOutStream.write(bytes);
        } catch (IOException e) {
            Log.w("태그:","데이터 전송 오류");
            e.printStackTrace();
        }
    }
}
노력노력 님이 2019년 9월 1일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...