戻るボタンに関するコードに問題があります。私はこのサイトでたくさんの答えを試しました。startActivityforResultを使用して2番目のアクティビティを呼び出すmainActivityがあります。この2番目のアクティビティは、Bluetoothを開始し、結合されたデバイスのリストを表示しますが、戻るボタンを押すと、エラーでアプリが停止します。
public class Main extends Activity implements OnSeekBarChangeListener{
...
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
String address = data.getExtras().getString(BondedDevices.DEVICE_ADDRESS);
if (resultCode==Activity.RESULT_CANCELED){
Toast.makeText(getApplicationContext(), "Finalizando dispositivos pareados", Toast.LENGTH_SHORT).show();
return;
}
switch (requestCode) {
case DISPOSITIVOS_PAREADOS:
if(resultCode==Activity.RESULT_OK){
mConnectThread = new ConnectThread(address);
mConnectThread.start();
estado = EST_CONECTADO; //informa que esta conectado
atualizaEstado();
break;
}
return;
}
}
しかし、2番目のアクティビティにいて、戻るボタンを押すだけでメインアクティビティに戻ろうとすると、メインアクティビティでエラーが発生し、アプリがエラーを返します。
public class BondedDevices extends ListActivity {
....
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
if(D) Log.e(TAG, "+++ ON BACK PRESSED +++");
setResult(Activity.RESULT_CANCELED);
this.finish();
}
またはこのように:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(event.getAction() == KeyEvent.ACTION_DOWN)
{
switch(keyCode)
{
case KeyEvent.KEYCODE_BACK:
Intent returnIntent = new Intent();
setResult(Activity.RESULT_CANCELED, returnIntent);
finish();
return true;
}
}
return false;
}
さまざまなコードを試しましたが、それでも機能しません。誰か助けてください。ありがとうございました。