2015-01-12 63 views
2

我有在底部的「掃描」按鈕SettingsActivity:返回從項目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); 
} 

當一個項目(藍牙設備)已經被點擊了該名單 - 我保存該項目,並顯示舉杯,告訴用戶去上一個屏幕:

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

我的(可能是很基本的)問題:而不是顯示敬酒,怎麼能我的應用程序只是返回到前一個屏幕?

在上面的onListItemClick()方法中調用什麼方法代替Toast.makeText()

+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,address);'想要第二個參數是一個「意圖」... –

+1

請參閱該答案的底部。它需要一個'Intent',所以你創建一個帶有空的構造函數,然後將'String Extra'添加到它,就像通過'Intent'將值從A傳遞給B一樣 – codeMagic

回答

2

我與其他答案同意關閉當前的活動,呼籲結束是解決方案。但是你應該知道使用完成方法的一些事情。

  1. 調用finish()的方法將運行至完成。完成()操作甚至不會開始,直到您將控制權返回給Android。

所以,你應該在完成之後放置一個return語句,因爲調用完成的方法將在其他情況下完全執行。

  1. 如果您不希望在用戶按下後退按鈕時再次加載此活動,則可以使用此方法。因爲它也從後臺清除活動。

使用finish()方法時請記住這一點。

1

我覺得

ActivityName.this.finish(); 

應該夠了。

0

所有你需要做的就是這樣的

ScanningActivity.this.finish();