1

したがって、設定に EditText があり、テキストを取得して文字列として使用したいと考えています。次に、ボタンがクリックされるたびにその文字列を使用し、別の EditText テキストを設定から文字列に設定します。コード :

<EditTextPreference android:title="Uredi Text"
    android:key="ime"
    android:summary="ime pjesme"
    />

Java コード:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
    String b1t = preferences.getString("ime", "DEFAULT");
 et1 = (EditText) findViewById(R.id.editText1);
//Button Click
public void button(View view) {
        et1.setText(b1t);
}
4

3 に答える 3

1

エラーがどこにあるのかわからないので、これを行うためのコードを提供します。

    SharedPreferences sharedPreferences = PreferenceManager
            .getDefaultSharedPreferences(getBaseContext();

         String string = sharedPreferences
                .getString("key", "default");

そして私の好みでは

    <EditTextPreference
        android:defaultValue="default"
        android:key="key"
        android:summary="I'm a summary"
        android:title="I'm a title" />

編集テキストを変更する onCLick メソッドの場合

  EditText editText = (EditText) 
        findViewById(R.id.editText);

  editText.setText(String.valueOf(string));

このコードは機能します。アプリケーションがまだクラッシュする場合、問題は onClick イベントまたはその他のいずれかにあります。私は個人的にボタンの onClickListeners を好みます。

onClickListener のコードを次に示します。

 Button button = (Button)
      findViewById(R.id.button);

 button.setOnClickListener(new OnClickListener() 
 {
     @Override
     public void onClick(View v) 
     {

          //Do some awesome stuff

     }
 });
于 2012-11-17T03:06:57.637 に答える
1

編集:ジョンは私の前に彼の答えを投稿しました。彼の答えは、標準などのほとんどのユースケースを反映していますActivity。私の答えは、の使用のみを対象としていますPreferenceActivity

内のPreference別のものに基づいてデフォルトで を追加する方法は次のとおりです。携帯から入力しているので、間違っていたらすみません。PreferencePreferenceActivity

XMLで定義Preferenceされた s の値は自動的に SharedPreferences に保存されますが、コードで作成されたsPreferenceは手動で保存/永続化する必要があります。

PreferenceActivityonConfigurationChange() は通常、コードで作成された設定の状態を保存します (ネストされた PreferenceScreen は少し奇妙です)。

そして、もちろん、null チェックを実行する必要があります (念のために省略します)。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    android:title="Preferences"
    android:key="root">
    <EditTextPreference android:title="Default Pref Text"
        android:key="ime"
        android:summary="ime pjesme"
    />
    <Preference android:title="Click to add a preference."
        android:key="add"
        android:summary=""
    />
</PreferenceScreen>

MyActivity.class

public class MyActivity extends PreferenceActivity {
    public void onCreate(Bundle inState) {
        super.onCreate(inState);
        setContentView(R.layout.activity_main);
        getPreferenceScreen.findPreference(PREFERENCE_BUTTON).
          setOnPreferenceClickListener(new OnNewPrefClickListener());
    }
    private class OnNewPrefClickListener implements OnPreferenceClickListener {
        public boolean onPreferenceClick(Preference preference) {
            PreferenceScreen rootScreen = getPreferenceScreen();
            EditTextPreference defaultPref = 
                      (EditTextPreference)rootScreen.findPreference("ime");
            String defaultText = defaultPref.getText();
            EditTextPreference newPref = new EditTextPreference(getApplicationContext());
            newPref.setText(defaultText);
            rootScreen.addPreference(newPref);
            return true;
        }
    }
}
于 2012-11-17T04:15:49.007 に答える
1

開発者ドキュメントによると、単に使用できますedittextpreference.getText().toString()

于 2012-11-16T20:43:10.797 に答える