0

我有一个EditTextPreference,我想在两个不同的PreferenceScreen中向用户显示。它应该是完全相同的首选项(让android:键为“myEditText”),只显示在两个不同的屏幕上。 所以,这里是它可能看起来像(完全剥夺了向您展示一个例子)什么:Android:在首选项xml中多次使用相同的首选项

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
    <PreferenceCategory android:title="@string/someCategory"> 
     <PreferenceScreen android:key="someScreen"> 
      <PreferenceScreen android:key="someSubScreen"> 
       <PreferenceCategory android:title="@string/someSubCategory"> 
        <EditTextPreference android:key="myEditText" 
        .... 
        /> 
       </PreferenceCategory> 
      </PreferenceScreen> 
     </PreferenceScreen> 
    </PreferenceCategory> 
    <PreferenceCategory android:title="@string/someOtherCategory"> 
     <PreferenceScreen android:key="someOtherScreen"> 
      <PreferenceScreen android:key="someOtherSubScreen"> 
       <PreferenceCategory android:title="@string/someOtherSubCategory"> 
        <EditTextPreference android:key="myEditText" 
        .... 
        /> 
       </PreferenceCategory> 
      </PreferenceScreen> 
     </PreferenceScreen> 
    </PreferenceCategory> 
</PreferenceScreen> 

当我去通过someScreen到myEditText并输入文字,它不是所示,当我回去开myEditText通过其他屏幕。我必须关闭偏好并再次打开它。然后,两个EditTexts显示相同的文本。

那么,在不同屏幕上拥有完全相同的首选项的最佳方式是什么?

/编辑:

为什么我要这么做啊? 第一个PreferenceScreen是关于URL缩短的。您可以设置缩短选项,选择/重新排序要使用的服务,并输入bit.ly,goo.gl等用户凭据。

第二个屏幕用于文件上载服务,您可以在其中执行相同的操作(设置选项用于文件上传,选择/重新排序服务,输入用于上载服务的用户凭证)。

现在我正在整合CloudApp,它既是一个文件,也是一个URL缩短服务。因此,用户可能会尝试在URL缩短屏幕上找到它,但他也可能会在文件上传屏幕上查找它。所以,我想让他变得简单,并在两个屏幕上都显示出来。它们不是顶级屏幕,它有相当深的结构。

所以,除了这个有意义之外:是否有可能?

+0

为什么你认为这是一个好主意呢? – CommonsWare 2011-02-23 12:15:39

+0

我编辑了这个问题来回答这个问题。 – Manuel 2011-02-23 12:58:28

回答

1

好的,这是我现在正在做的。这不是很好,但它的工作,目前我满足于此:

而不是使用相同的键,使用不同的EditTextPreferences(比如myEditText和myEditText2)。 在优先选择代码创建一个OnPreferenceChangeListener:

final OnPreferenceChangeListener myEditTextChangeListener = new OnPreferenceChangeListener() { 
     public boolean onPreferenceChange(Preference preference, Object newValue) { 
      String newEntry = (String)newValue; 
      myEditText.setText(newEntry); 
      myEditText2.setText(newEntry); 
      return false; 
     } 
    }; 

指定监听到两个EditTextPreferences:

myEditText.setOnPreferenceChangeListener(myEditTextChangeListener); 
myEditText2.setOnPreferenceChangeListener(myEditTextChangeListener); 

在该OnSharedPreferenceChangeListener注册的主要活动,我只需要监控变为第一的EditText 。实际上,我完全忽略了第二个EditText,因为它始终与第一个EditText具有相同的条目。