2016-08-02 2 views
-3

한 활동에서 다른 활동으로 숫자 EditText의 문자열을 보내려고합니다. 그러나 클릭하면 내 apk 충돌이 저장됩니다. 다음은 코드와 logcat입니다.문자열을 보낼 때 Android가 다운 됨

설정

public class settings extends Activity { 

    Button btnSave; 
    TextView text; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_settings); 

     btnSave = (Button)findViewById(R.id.save); 
     final EditText passkey = (EditText)findViewById(R.id.editText); 
     text=(TextView)findViewById(R.id.textView3); 


     btnSave.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       String pass = passkey.getText().toString(); 

       Intent myIntent = new Intent(settings.this, unlock.class); 
       myIntent.putExtra("String", pass); 
       startActivity(myIntent); 
      } 
     }); 
    } 
} 

잠금 해제

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_unlock); 

     String newString; 
     if (savedInstanceState == null) { 
      Bundle extras = getIntent().getExtras(); 
      if(extras == null) { 
       newString= null; 
      } else { 
       newString= extras.getString("String"); 
      } 
     } else { 
      newString= (String) savedInstanceState.getSerializable("String"); 
     } 

onResume() 메소드.

@Override 
    public void onResume() { 
     super.onResume(); 

     Intent intent = getIntent(); 

     address = intent.getStringExtra(DeviceList.EXTRA_ADDRESS); 

     BluetoothDevice device = btAdapter.getRemoteDevice(address); 

     try { 
      btSocket = createBluetoothSocket(device); 
     } catch (IOException e) { 
      Toast.makeText(getBaseContext(), "Socket creation failed", Toast.LENGTH_LONG).show(); 
     } 
     try 
     { 
      btSocket.connect(); 
     } catch (IOException e) { 
      try 
      { 
       btSocket.close(); 
      } catch (IOException e2) 
      { 
       // 
      } 
     } 
     mConnectedThread = new ConnectedThread(btSocket); 
     mConnectedThread.start(); 

     mConnectedThread.write("x"); 
    } 

장치 목록

public class DeviceList extends AppCompatActivity { 

    Button btnPaired; 
    ListView devicelist; 
    private BluetoothAdapter myBluetooth = null; 
    private Set<BluetoothDevice> pairedDevices; 
    public static String EXTRA_ADDRESS = "device_address"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_device_list); 

     btnPaired = (Button)findViewById(R.id.button); 
     devicelist = (ListView)findViewById(R.id.listView); 

     myBluetooth = BluetoothAdapter.getDefaultAdapter(); 
     if(myBluetooth == null) 
     { 

      Toast.makeText(getApplicationContext(), "Bluetooth Device Not Available", Toast.LENGTH_LONG).show(); 

      finish(); 
     } 
     else 
     { 
      if (myBluetooth.isEnabled()) 
      { } 
      else 
      { 

       Intent turnBTon = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
       startActivityForResult(turnBTon,1); 
      } 
     } 
     btnPaired.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) 
      { 
       pairedDevicesList(); 
      } 
     }); 
    } 

    private void pairedDevicesList() 
    { 
     pairedDevices = myBluetooth.getBondedDevices(); 
     ArrayList list = new ArrayList(); 

     if (pairedDevices.size()>0) 
     { 
      for(BluetoothDevice bt : pairedDevices) 
      { 
       list.add(bt.getName() + "\n" + bt.getAddress()); 
      } 
     } 
     else 
     { 
      Toast.makeText(getApplicationContext(), "No Paired Bluetooth Devices Found.", Toast.LENGTH_LONG).show(); 
     } 

     final ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, list); 
     devicelist.setAdapter(adapter); 
     devicelist.setOnItemClickListener(myListClickListener); 
    } 
    private AdapterView.OnItemClickListener myListClickListener = new AdapterView.OnItemClickListener() 
    { 
     public void onItemClick (AdapterView av, View v, int arg2, long arg3) 
     { 
      String info = ((TextView) v).getText().toString(); 
      String address = info.substring(info.length() - 17); 

      Intent i = new Intent(DeviceList.this, unlock.class); 

      i.putExtra(EXTRA_ADDRESS, address); 
      startActivity(i); 
     } 
    }; 

} 





  
+0

'onResume()'을 (를) 보여주십시오. –

+0

게시했습니다. 도움이 되었기를 바랍니다. –

+0

onResume();에서 무엇을하고 있습니까? –

답변

0

이제 different valuesdevice address 하나와 edit text 값을 하나 two positions에서 Single class를 여는 무슨 일이 일어나고 있는지.

그래서 editext 값을 전달하면 기기 주소가 null이고 앱이 충돌하여이 추가 유효성 검사를 처리합니다. if(address != null) 그렇지 않으면 연결하지 않습니다.

@Override 
    public void onResume() { 
     super.onResume(); 

     Intent intent = getIntent(); 
     address = intent.getStringExtra(DeviceList.EXTRA_ADDRESS); 

     if(address != null){ 
     BluetoothDevice device = btAdapter.getRemoteDevice(address); 

     try { 
      btSocket = createBluetoothSocket(device); 
     } catch (IOException e) { 
      Toast.makeText(getBaseContext(), "Socket creation failed", Toast.LENGTH_LONG).show(); 
     } 
     try 
     { 
      btSocket.connect(); 
     } catch (IOException e) { 
      try 
      { 
       btSocket.close(); 
      } catch (IOException e2) 
      { 
      } 
     } 
     mConnectedThread = new ConnectedThread(btSocket); 
     mConnectedThread.start(); 
     mConnectedThread.write("x"); 
    } 
} 
+0

이제 작동 할 수 있습니다! 감사합니다 –

+0

@ H.Stefek 다음에 전체 정보를 제공해 주셔서 감사합니다. 안녕하세요. –

+0

코딩을 언락하기 위해 설정에서 돌아 왔을 때, 언론의 어떤 버튼을 눌러도 충돌이 발생합니다. –

-1

이 줄을 사용합니다 : 대신이 라인의

newString =extras.getString("String", null); 

: onResume()에서

newString= extras.getString("String"); 
+0

여전히 똑같은 오류가 발생했습니다. –

0

을 당신은

012을하고있다
Intent intent = getIntent(); 

     address = intent.getStringExtra(DeviceList.EXTRA_ADDRESS); 

     BluetoothDevice device = btAdapter.getRemoteDevice(address); 

언제 DeviceList.EXTRA_ADDRESS 키를 가진 의도에서 아무 것도 전달하지 않았으며 여기에 문제가 있습니다. 그 후 null 주소로 remoteDevice를 찾고 있습니다.

+0

해결 방법은 어디에 있습니까? –

+0

3 가지 활동, 4 가지가 있지만 하나는 화면을로드하고 계산하지 않습니다. 하나는 arduino 블루투스 장치를 찾아 연결하는 장치 목록이며 그 다음 잠금 해제 활동을 엽니 다. –

+0

원인 : java.lang.IllegalArgumentException : null이 아닙니다. 유효한 블루투스 주소 – Aditi

관련 문제