2015-01-12 2 views
2

У меня есть SettingsActivity с кнопкой «Scan» в нижней части:Возврат к предыдущей деятельности с ListActivity по пункту нажмите

settings

Когда эта кнопка нажата, она начинает ListActivity:

(я планирую перейти к фрагментам позже. Сейчас я хотел бы использовать мероприятие.)

<Button 
    android:id="@+id/scanButton" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:onClick="startScanning" 
    android:text="Scannen und Beacon ausw\u00E4hlen..." /> 

public void startScanning(View v) { 
    Intent i = new Intent(this, ScanningActivity.class); 
    startActivity(i); 
} 

Когда элемент (а Bluetooth-устройство) был нажат в этот список - я сохранить этот пункт и показать тост, который сообщает пользователю, чтобы перейти к предыдущему экрану:

screenshot

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 
    BluetoothDevice device = (BluetoothDevice) getListView().getItemAtPosition(position); 
    String address = device.getAddress(); 
    mEditor.putString(CommonConstants.PREF_ADDRESS, address); 
    mEditor.commit(); 

    Toast.makeText(this, 
     "Ger\u00E4t-Adresse gespeichert, bitte Dienst neu starten", 
     Toast.LENGTH_SHORT) 
     .show(); 
} 

Мой (вероятно, очень простой) вопрос: вместо отображения тост, как может мое приложение просто вернется к предыдущему экрану?

Какой метод вызывать вместо Toast.makeText() в приведенном выше методе onListItemClick()?

+1

Если вы хотите вернуть данные, вы можете [видеть этот ответ об использовании startActivityForResult()] (http://stackoverflow.com/questions/18243515/android-going-back-to-previous-activity-with -different-intent-value/18243541 # 18243541) – codeMagic

+0

Спасибо +1, но я не понимаю, как передать мой адрес (который является 'String') назад - поскольку' setResult (Activity.RESULT_OK, адрес); 'хочет второй аргумент должен быть «Intent» ... –

+1

См. нижнюю часть этого ответа. Он принимает «намерение», поэтому вы создаете его с помощью пустого конструктора и добавляете к нему «String Extra», как если бы вы передавали значение от A до B через «Intent» – codeMagic

ответ

2

Я согласен с другими ответами, что вызов закончить это решение. Но вы должны знать несколько вещей об использовании метода отделки.

  1. Метод, который называется finish(), будет завершен. Операция finish() не начнется, пока вы не вернете управление Android.

Итак, после этого вы должны поместить оператор return, потому что метод, который называется finish, будет выполнен полностью иначе.

  1. Этот метод можно использовать в том случае, если вы не хотите, чтобы это действие загружалось снова и снова, когда пользователь нажимает кнопку «Назад». Потому что он также очищает активность из задней части.

Пожалуйста, помните об этом при использовании метода finish().

1

Я думаю

ActivityName.this.finish(); 

должно быть достаточно.

0

Все, что вам нужно сделать, это близко текущая деятельность как эта

ScanningActivity.this.finish(); 
Смежные вопросы