0

내 edittextpreference에서 값을 가져오고 내 mainActivity 레이아웃의 textviews 글꼴 크기를 변경하려고합니다. 이 사람들하고 도와주세요. 바보 같은 실수를 저 지르게 될 것입니다. 도와 주시면 감사하겠습니다.내 MainActivity에서 EditTextPreference의 참조를 얻는 방법?

MainActivity.java

public class MainActivity extends AppCompatActivity { 
TextView txt; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    SharedPreferences sp= PreferenceManager.getDefaultSharedPreferences(this); 
    String str=sp.getString("editTextPref","50"); 

    if(sp!=null) 
    { 
     Toast.makeText(this,"String value is "+str,Toast.LENGTH_LONG).show(); 
     txt=(TextView) findViewById(R.id.textView); 
     txt.setTextSize(Float.parseFloat(str)); 
    } 
    Toast.makeText(this,"String value is :"+str,Toast.LENGTH_LONG).show(); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
getMenuInflater().inflate(R.menu.menu_main,menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int items=item.getItemId(); 

    switch(items) 
    { 
     case R.id.setting: 
      Toast.makeText(this,"Settings Clicked",Toast.LENGTH_LONG).show(); 
      finish(); 
      Intent i=new Intent(this,Prefs.class); 
      startActivity(i); 
      break; 
    } 
    return super.onOptionsItemSelected(item); 
} 
} 

Prefs.java

public class Prefs extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener { 
SharedPreferences sp; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.prefs); 

    // show the current value in the settings screen 
    for (int i = 0; i < getPreferenceScreen().getPreferenceCount(); i++)  { 
     initSummary(getPreferenceScreen().getPreference(i)); 
    } 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); 
} 

@Override 
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 
    updatePreference(findPreference(key)); 
} 

private void initSummary(Preference p) { 
    if (p instanceof PreferenceCategory) { 
     PreferenceCategory cat = (PreferenceCategory) p; 
     for (int i = 0; i < cat.getPreferenceCount(); i++) { 
      initSummary(cat.getPreference(i)); 
     } 
    } else { 
     updatePreference(p); 
    } 
} 

private void updatePreference(Preference p) 
{ 
    if(p instanceof EditTextPreference) 
    { 
     EditTextPreference editTextPreference=(EditTextPreference) p; 
     p.setSummary(editTextPreference.getText()); 
    } 
} 

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    this.finish(); 
    startActivity(new Intent(Prefs.this,MainActivity.class)); 
    Toast.makeText(this,"Pref activity finished",Toast.LENGTH_LONG).show(); 
} 
} 

있는 prefs.xml

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 

<PreferenceCategory 
    android:enabled="false" 
    android:key="settingCategory" 
    android:title="Settings" 
    > 
</PreferenceCategory> 
<EditTextPreference 
    android:id="@+id/editTextPref" 
    android:dialogMessage="I am Dialog Message" 
    android:dialogTitle="Dialog Title" 
    android:hint="e.g 25" 
    android:icon="@mipmap/ic_launcher" 
    android:key="fontSize" 
    android:padding="5dp" 
    android:selectAllOnFocus="true" 
    android:singleLine="true" 
    android:summary="Changes Font Size of Overall App" 
    android:title="Change Font Size" /> 
</PreferenceScreen> 
+0

된 SharedPreferences 특검팀의 =의 PreferenceManager.getDefaultSharedPreferences (이); 문자열 str = sp.getString ("editTextPref", ""); –

+0

이 정보가 도움이되기를 바랍니다. –

+0

아니요 문제가 키로 ... replyng bro에 대한 고마워요. – Rahul

답변

3
당신은 EditTextPreference의 id 필드의 키 fontSize없는 이름에 대한 값을 읽어해야

. 이처럼 MainActivity에 코드를 변경합니다

SharedPreferences sp= PreferenceManager.getDefaultSharedPreferences(this); 
String str=sp.getString("fontSize","50"); 
+0

예. 고맙습니다. 고맙습니다. editTextPref가 내 키라고 생각하고 그 onyl로 시도했습니다 ... ur 답변을 통해 내 pref.xml을 다시 확인했습니다. 어쨌든 고마워. – Rahul

+0

@mirekkomis 대단히 감사합니다. –

관련 문제