Это мой первый Android-проект, и у меня есть некоторые проблемы. У меня есть основной вид деятельности, который также является моей деятельностью.Активность запуска StartIntentOnResult
Я делаю два IntentOnResult, чтобы получать информацию от других мероприятий (Bluetoothcheck и поиск маяков). Но если я получу результат второго намерения, он также выполнит первый. Похоже, он перезапускает активность дыры.
Как я могу «переключиться» между действиями? Пометить его как один экземпляр режима запуска не работает.
В чем моя ошибка?
Вот мой код:
public class MainActivity extends Activity {
public static int REQUEST_ID_BluetoothCheck = 1;
public static int REQUEST_ID_MonitoringActivity = 1;
public static Button SearchBeacons = null;
//Result der Beacon Suche
public String UUID;
private String Major;
private String Minor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Check aufrufen um Bluetooth zu prüfen
Intent intentCheckBluetooth = new Intent(getApplicationContext(), BluetoothCheck.class);
startActivityForResult(intentCheckBluetooth, REQUEST_ID_BluetoothCheck);
SearchBeacons = (Button)findViewById(R.id.SearchBeacons);
//Button klick erkennen und MonotoringActivity starten
SearchBeacons.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intentStartSearch = new Intent(getApplicationContext(), MonitoringActivity.class);
startActivityForResult(intentStartSearch, REQUEST_ID_MonitoringActivity);
}
});
//Todo Links über Json holen für KIS/ PACS
}
//Methode für die Antwort einer anderen Activity
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_ID_BluetoothCheck) {
if (resultCode == RESULT_OK) {
Toast toast = Toast.makeText(getApplicationContext(), "Bluetoothcheck erfolgreich durchgeführt", Toast.LENGTH_SHORT);
toast.show();
}
else{
Toast toast = Toast.makeText(getApplicationContext(), "Bluetoothcheck war nicht erfolgreich. Die App funktioniert deshalb nicht und wurde beendet.", Toast.LENGTH_LONG);
toast.show();
finish();
}
}
if (requestCode == REQUEST_ID_MonitoringActivity){
if (resultCode == RESULT_OK) {
Intent IntentBackToMain = getIntent();
Bundle bundle = IntentBackToMain.getExtras();
if(bundle != null) {
UUID = bundle.getString("UUID");
Major = bundle.getString("Major");
Minor = bundle.getString("Minor");
}
}
else{
Toast toast = Toast.makeText(getApplicationContext(), "Beacon suche war nicht erfolgreich. Bitte Prüfen Sie ob sich ein Beacon in der Nähe befindet und probieren es gegebenenfalls nochmal", Toast.LENGTH_LONG);
toast.show();
}
}
}
}
__________Update:
В классе ответа он выглядит как:
Intent result = new Intent();
result.putExtra("UUID", (String) beacons.iterator().next().getId1().toString());
result.putExtra("Major", (String) beacons.iterator().next().getId2().toString());
result.putExtra("Minor", (String) beacons.iterator().next().getId3().toString());
setResult(RESULT_OK, result);
finish();
в главном классе:
if (requestCode == REQUEST_ID_MonitoringActivity){
if (resultCode == RESULT_OK) {
Bundle bundle = data.getExtras();
if(bundle != null) {
UUID = bundle.getString("UUID");
Major = bundle.getString("Major");
Minor = bundle.getString("Minor");
}
}
else{
Toast toast = Toast.makeText(getApplicationContext(), "Beacon suche war nicht erfolgreich. Bitte Prüfen Sie ob sich ein Beacon in der Nähe befindet und probieren es gegebenenfalls nochmal", Toast.LENGTH_LONG);
toast.show();
}
}
Ok я изменил его. Но результат тот же! – AndroidNewbee
Вы покинули режим запуска по умолчанию или все еще используете для него другие настройки? onCreate не следует вызывать при возврате из другого действия при использовании режима запуска по умолчанию. – tknell
Как вы заканчиваете другие действия? – tknell