Android发送字符串时崩溃

时间:2016-08-02 09:28:10

标签: java android

我想将数字EditText中的字符串从一个活动发送到另一个活动。但是,当我点击保存我的apk崩溃。这是代码和logcat。

设置

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);
        }
    };

}





 

2 个答案:

答案 0 :(得分:0)

onResume()你正在做

Intent intent = getIntent();

        address = intent.getStringExtra(DeviceList.EXTRA_ADDRESS);

        BluetoothDevice device = btAdapter.getRemoteDevice(address);

你什么时候通过密钥DeviceList.EXTRA_ADDRESS的意图传递任何东西,这就是问题所在。之后,您将通过该空地址找到remoteDevice。

答案 1 :(得分:0)

现在发生的事情是Single classtwo positions打开different values,其中device address一位edit text,一位if(address != null)值。

因此,当您传递editext值时,设备地址为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"); } } 然后再连接。

id="id_form-0-item"