2016-06-07 76 views
0

我的MainActivity有一個EditText,提示「Weight (lb)」,以及一個按鈕,轉到SettingsActivity。在SettingsActivity中,用戶可以將使用的單位從US更改爲Metric。在通過手機內置的後退按鈕退出SettingsActivity後,我想讓EditText的提示立即從「Weight (lb)」更改爲「Weight (kg)」。在退出其他活動後更新主要活動中的某些字段

我得到的最遠處使用onBackPressed()方法SettingsActivity。檢測到按鈕被按下,其中的代碼被執行,但我不想更改SettingsActivity類中與MainActivity相關的任何內容。

有沒有一種on___()方法,我應該在這裏使用,我不知道?任何幫助,將不勝感激。

+0

您是否嘗試過使用意向'onBackPressed()'?從「SettingsActivity」到「MainActivity」的內容?這將導致'MainActivity'重新加載提示。我假設這個提示存儲在某個地方。 –

+0

@DanielK提示存儲在相關的EditText的'android:hint'字段中。這是存放它的最佳地點嗎?另外,我將如何在'onBackPressed()'上使用Intent? –

+0

它是如何存儲的?如果您使用SharedPreferences,那麼您可以使用下面的解決方案。 –

回答

0

簡單的選擇是將waitUnit存儲在共享首選項中,然後在Main活動的OnResume()中從其中讀取並更新小部件。

您可以在設置活動更新首象下面這樣:

preferences = context.getSharedPreferences(context.getString(R.string.preference_file_key), 
         Context.MODE_PRIVATE); 
preferences.edit().putString("unit", "kg"); 

你可以閱讀的onResume您的主要活動的這個變化值()

preferences.getString("unit", "default unit") 
0

您可以使用startActivityForResult爲SettingsActivity和後處理返回結果爲:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
if (requestCode == PICK_CONTACT_REQUEST) { 
    // Make sure the request was successful 
    if (resultCode == RESULT_OK) { 
     // The user picked a contact. 
     // The Intent's data Uri identifies which contact was selected. 

     // Do something with the contact here (bigger example below) 
    } 

}

更多細節:https://developer.android.com/training/basics/intents/result.html

0

您可以使用startActivityForResult爲SettingsActivity和後處理返回的結果爲:

在您的MainActivity:

public static int CALL_SETTINGS = 1000; 
startActivityForResult(new Intent(this,SettingsActivity.class),CALL_SETTINGS); 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
if (requestCode == PICK_CONTACT_REQUEST) { 
// Make sure the request was successful 
    if (resultCode == RESULT_OK) { 
     // The user picked a contact. 
     // The Intent's data Uri identifies which contact was selected. 

    // Do something with the contact here (bigger example below) 
    } 
} 

In your Settings Activity: 
on backpressed write this: 

Intent returnIntent = new Intent(); 
returnIntent.putExtra("result",data); 
setResult(Activity.RESULT_OK,returnIntent); 
finish(); 
相關問題