2011-01-23 7 views
3

xmlからこのPreferenceScreenをロードしました。 私がチェックボックスをオンにして、サービスを開始すると、 はサーバに接続するのに5〜10秒必要です。 この間にチェックボックスを無効にするにはどうすればいいですか? レイアウトが膨らんでいるので、checkbox.setEnable = falseを取得する方法はわかりません。Android PreferenceScreenで長い操作中にチェックボックスを無効にするには

<PreferenceScreen 
xmlns:android="http://schemas.android.com/apk/res/android"> 
<CheckBoxPreference 
    android:key="checkBoxenableincomingcall" 
    android:title="Enable incoming call" 
    android:defaultValue="true" 
    android:summary="hasse running as background service" /> 
<CheckBoxPreference 
    android:key="checkBoxmakephoneringonincoming" 
    android:title="Dont ring on message" 
    android:defaultValue="true" 
    android:summary="dont disturb me" /> 
<EditTextPreference 
    android:key="edittexvalue" 
    android:title="EditText" 
    android:summary="EditTextPreference" /> 

public class EditPreferences extends PreferenceActivity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    addPreferencesFromResource(R.xml.preferences); 
} 

}

答えて

3

あなたPreferenceActivityOnPreferenceChangeListenerを実装し、それを使用してチェックボックスを登録しています。あなたはそれが押されたことを検出すると、あなたがそれを無効にすることができる方法である好み

//in onCreate 
findPreference("checkboxpreferencekey").setOnPreferenceChangeListener(this); 


public boolean onPreferenceChange(Preference preference, Object newValue){ 
    if(preference.getKey().equals("checkboxpreferencekey")){ 
     preference.setEnabled(false); 
     return true; 
    } 
    else return true; 
} 

を無効にし、あなたはまだそれを再度有効にしたときに知ってあなたのサービスからのコールバックや放送のいくつかの並べ替えが必要になります。しかし、その時には同じようにしてください。

findPreference("checkboxpreferencekey").setEnabled(true); 
+0

ありがとうございますofcource。 – Erik

+0

このような実装では機能しません はOnPreferenceChangeListenerを実装しています。 AndroidManifest.xmlに何かを入れなければなりませんか? – Erik

+0

それは今良い仕事。 – Erik

関連する問題