2016-08-05 8 views
0

私は、設定ページになるように、プリファレンスアクティビティを拡張するアクティビティを持っています。設定ページの中には、編集テキストと3つの異なるリストビューがあります。右の "パスワード"(ハードコーディングされた文字列)が入力されると、それ以前の隠れたリストビューや無効なリストビューが有効になるように、編集テキストの入力をハードコードしたいと思います。これは同じ時間にどのように起こる可能性がありますか? 共有プリファレンス/プリファレンス・アクティビティはページ内のフラグメントの有効/無効を許可しますか?

private EditText password; 
@Override 
protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    password = (EditText)findViewById(R.id.adminpasswordsetting); 
    getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferencesFragment()).commit(); 

} 

public static class MyPreferencesFragment extends PreferenceFragment{ 
    @Override 
    public void onCreate(final Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.preferences); 

    } 
} 
private void setAdminSettings(){ 
    //set the password 
    if(password.getText().toString().equals("helloworld")){ 
    //SharedPreferences.Editor editor = preferences.edit; 
    } 
} 
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key){ 

} 

と私のxml好みはちょうど1 edittextpreferenceと3 listpreferencesある

+0

はい。入力したパスワードをテストし、正しい場合はFragmentTransactionを実行してUIに「隠した」設定を追加します。 – NoChinDeluxe

+0

私は嗜好アクティビティを初めてお勧めします。これはPreferenceFragmentを継承するパブリック静的クラス内で発生しますか?ありがとう – timedwalnut

+0

私が何を記述しているかわからない場合は、ここで助言を求める前に、自分でもう少し研究をする必要があります。フラグメントの操作は非常に基本的なものであり、EditTextの入力もテストしています。独自のソリューションをコーディングして、ここに戻って自分のコードに関する具体的な質問をすることができます。 – NoChinDeluxe

答えて

0

「そのまま」このコードは、おそらくので、それをコピー&ペーストしないでください...実行されません..しかし、私は何かのALOGを考えています次のコード行(ちょうどアイディアとして)

public class PrefsActivity extends PreferenceActivity { 

    public PrefsActivity() { 
     // TODO Auto-generated constructor stub 
    } 
@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.prefs); 
    ListPreference  lp1 = (ListPreference) findPreference(getString(R.string.lp1)); 
    CheckBoxPreference cb2 = (CheckBoxPreference) findPreference(getString(R.string.cb2)); 
    lp1.setEnabled(false); 
    cb2.setEnabled(false); 
    EditTextPreference etp1 = (EditTextPreference) findPreference(getString(R.string.mypassword)); 

    String mypassword =PreferenceManager.getDefaultSharedPreferences(this).getString(getString(R.string.mypassword), "0"); 

    if ("THE_PASSWORD".equals(mypassword)) { 
     lp1.setEnabled(true); 
     cb2.setEnabled(true); 
    } 

} 

} 
+0

これはonCreate()メソッド内にあるため、入力時に変更が発生する可能性がありますか?これは間違いなく私が信じているのは間違いないが、それはonCreate()内にあるので最初から実行され、まだ入力がない場合は何もしないということです。 – timedwalnut

+0

はい、書かれた方法 - おそらくそれは(もしそれが;-))次のように動作します:1.あなたがプリファレンスアクティビティを開きます。2.あなたがパスワードを入力します。3. prefアクティビティを閉じます。4.あなたがそれを再び開きます。 ...ここに改善の余地があります...しかし、私は一般的な考えを伝えるためにtrynigでした... – Plirkee

+0

OnSharedPreferenceChangeListener()を使用して、変更をキャッチし、正しいパスワードが入力されたときにlistvewを有効にできます。 – Plirkee

関連する問題