【问题标题】:Update Interface dynamically动态更新接口
【发布时间】:2012-04-14 00:41:17
【问题描述】:

我正在开发一个可以由其他手机通过 SMS 控制的 android 应用程序。我使用PreferenceScreen 作为布局(应用程序的设置部分)。调用 onResume() 时会更新布局。

当命令(SMS)通过其他手机发送时,后台运行的服务会窥探传入的短信并更改保存在 SharedPreferences 中的设置。为了看到这些变化,我的Activity需要执行onResume中的代码。如果我回到以前的活动并回来,我可以看到变化。

我希望通过运行服务更改 SharedPreferences 后立即显示更改。我应该怎么做才能实现它?

【问题讨论】:

    标签: android android-layout service


    【解决方案1】:

    类似这样的:

    public class MyActivity extends Activity implements OnSharedPreferenceChangeListener
    {
        public static final String PREFS_NAME = "MyPrefsFile";
    
        @Override
        protected void onCreate(Bundle state)
        {
          /* get shared preferences */
          SharedPreferences mySharedPreferences = getSharedPreferences(PREFS_NAME, 0);
    
          /* register listener for changes to the values within the shared preferences */
          mySharedPreferences.registerOnSharedPreferenceChangeListener(this);
        }
    
        public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
        {
          /* perform application processing */
          ...
    
          /* update layout */
          View myView = findViewById(id.my_view);
    
          /* invalidate the view causing it to be redrawn */
          myView.invalidate();
        }
    }
    

    【讨论】:

    猜你喜欢
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    相关资源
    最近更新 更多