Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在不同的布局中更新TextView_Android_Android Layout_Android Fragments_Android View - Fatal编程技术网

Android 如何在不同的布局中更新TextView

Android 如何在不同的布局中更新TextView,android,android-layout,android-fragments,android-view,Android,Android Layout,Android Fragments,Android View,如何从MyPreferenceFragment.java更新TextView genderTextView? 提前谢谢你 gender.xml: I'm just trying to update TextView (@id/pref_gender_textView) in the "gender.xml" where gender.xml is defined in preference.xml. I'd like to update the TextView from MyPrefere

如何从MyPreferenceFragment.java更新TextView genderTextView?
提前谢谢你

  • gender.xml:

    I'm just trying to update TextView (@id/pref_gender_textView) in the "gender.xml" where gender.xml is defined in preference.xml.  I'd like to update the TextView from MyPreferenceFragment.java
    


    Android框架负责将首选项保存在设备上应用程序的/data目录中的XML文件中。API提供了几种方法来处理存储的首选项

    您确实不想在其他布局中更新TextView。这样做会在首选项视图和其他视图之间引入不必要的紧密耦合。您真正想要的只是在设置更改时更新TextView中的文本。这可以通过实现SharedReferences.OnSharedPreferenceChangeListener来实现。为此,请将您的活动注册为侦听器,例如:

    import android.os.Bundle;
    import android.preference.ListPreference;
    import android.preference.Preference;
    import android.preference.Preference.OnPreferenceChangeListener;
    import android.preference.PreferenceFragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    
    public class MyPreferenceFragment extends PreferenceFragment{   
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);
    
            /** Defining PreferenceChangeListener */
            OnPreferenceChangeListener onPreferenceChangeListener = new OnPreferenceChangeListener() {
    
                @Override
                public boolean onPreferenceChange(Preference preference, Object newValue) {             
                    OnPreferenceChangeListener listener = ( OnPreferenceChangeListener) getActivity();
                    listener.onPreferenceChange(preference, newValue);
                    return true;
                }
            };  
    
        }
    
    }
    

    性别文本视图在哪里?其他活动的一部分还是什么?
    <?xml version="1.0" encoding="utf-8"?>
    <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    
        <ListPreference
                android:key="lp_gender"
                android:entries="@array/array_lp_gender"
                android:entryValues="@array/array_lp_gender_values"
                android:title="@string/str_lp_android_choice_gender"
                android:layout="@layout/gender"/>
    
    </PreferenceScreen>
    
    import android.os.Bundle;
    import android.preference.ListPreference;
    import android.preference.Preference;
    import android.preference.Preference.OnPreferenceChangeListener;
    import android.preference.PreferenceFragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    
    public class MyPreferenceFragment extends PreferenceFragment{   
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);
    
            /** Defining PreferenceChangeListener */
            OnPreferenceChangeListener onPreferenceChangeListener = new OnPreferenceChangeListener() {
    
                @Override
                public boolean onPreferenceChange(Preference preference, Object newValue) {             
                    OnPreferenceChangeListener listener = ( OnPreferenceChangeListener) getActivity();
                    listener.onPreferenceChange(preference, newValue);
                    return true;
                }
            };  
    
        }
    
    }
    
    public class YourActivity extends Activity implements OnSharedPreferenceChangeListener {
    
       private TextView mMyText;
    
       @Override
        public void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
            setContentView(R.layout.your_layout);
    
            mMyText = (TextView) findViewById(android.R.id.my_text);
    
            // listen to preference changes
            SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
            sharedPref.registerOnSharedPreferenceChangeListener(this);
    
            ...
        }
    
        @Override
        public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
                String key) {
    
            if(key.equals(getString(R.string.pref_key_myText))){
    
                mMyText.setText(sharedPreferences.getString(key, getString(R.string.pref_myText_defaultValue)));
            }
        }
    }