我想将数字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);
}
};
}
答案 0 :(得分:0)
在onResume()
你正在做
Intent intent = getIntent();
address = intent.getStringExtra(DeviceList.EXTRA_ADDRESS);
BluetoothDevice device = btAdapter.getRemoteDevice(address);
你什么时候通过密钥DeviceList.EXTRA_ADDRESS
的意图传递任何东西,这就是问题所在。之后,您将通过该空地址找到remoteDevice。
答案 1 :(得分:0)
现在发生的事情是Single class
从two 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"