2016-06-07 53 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(); 
相关问题