gpt4 book ai didi

java - SettingsFragment().findPreference 始终返回 NULL

转载 作者:行者123 更新时间:2023-12-01 11:54:13 24 4
gpt4 key购买 nike

当我尝试在 SettingsFragment 中查找 Preference 时,我总是得到 NULL。

设置 fragment

public static class SettingsFragment extends PreferenceFragment {

public final String KEY_PREF_SERVER_IP = "key_pref_server_ip";

@Override
public void onCreate(Bundle savedInstanceState) {

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getAppContext());

super.onCreate(savedInstanceState);

// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);

SharedPreferences.OnSharedPreferenceChangeListener spChanged = new
SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
if(key.equals(KEY_PREF_SERVER_IP) || key.equals(KEY_PREF_SERVER_PORT)) {

System.out.println(key);
EditTextPreference muffin = (EditTextPreference) SettingsFragment.findPreference(key);

}

change = 1;
}


};
prefs.registerOnSharedPreferenceChangeListener(spChanged);
}

}

因此,当我尝试 EditTextPreference muffin = (EditTextPrefernce) new SettingsFragment.findPreference(key) 时,我总是得到 NULL。

有什么技巧吗?

编辑:

这里是整个代码:

public class Einstellungen extends Activity{

private static Context context;


public static final String KEY_PREF_SERVER_IP = "key_pref_server_ip";
public static final String KEY_PREF_SERVER_PORT = "key_pref_server_port";
public static int change = 0;

public static class SettingsFragment extends PreferenceFragment {



public final String KEY_PREF_SERVER_IP = "key_pref_server_ip";

@Override
public void onCreate(Bundle savedInstanceState) {

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getAppContext());

super.onCreate(savedInstanceState);

// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);

SharedPreferences.OnSharedPreferenceChangeListener spChanged = new
SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
if(key.equals(KEY_PREF_SERVER_IP) || key.equals(KEY_PREF_SERVER_PORT)) {

System.out.println(key);
EditTextPreference muffin = (EditTextPreference) SettingsFragment.findPreference(key);

}

change = 1;
}


};
prefs.registerOnSharedPreferenceChangeListener(spChanged);
}

}



@Override
protected void onCreate(Bundle savedInstanceState) {

Einstellungen.context = getApplicationContext();

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);

Einstellungen.context = this;




getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
getFragmentManager().beginTransaction()
.replace(R.id.test, new SettingsFragment())
.commit();

getFragmentManager().executePendingTransactions();

}

public static Context getAppContext() {
return Einstellungen.context;
}



public void onBackPressed() {

if(change == 1) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(Einstellungen.this, "Um die Änderungen zu übernehmen bitte die App neustarten", Toast.LENGTH_SHORT).show();
}
});
}

finish();

}



}

首选项.xml

<?xml version="1.0" encoding="utf-8"?>

    android:title="@string/Servereinstellungen"
android:key="key_pref_server">
<EditTextPreference
android:title="@string/IP_Adresse"
android:key="key_pref_server_ip"
android:summary="(IP)"
android:inputType="number"
android:defaultValue="(IP)"/>
<EditTextPreference
android:title="@string/Port"
android:key="key_pref_server_port"
android:inputType="number"
android:summary="(PORT)"
android:defaultValue="(PORT)"/>
</PreferenceCategory>
<PreferenceCategory
android:title="ÜBER"
android:descendantFocusability="blocksDescendants"
>
<EditTextPreference
android:title="Entwickler"
android:summary=""
android:selectable="false"
/>
<EditTextPreference
android:title="Version"
android:summary="1.0"
android:selectable="false"
/>

</PreferenceCategory>

我想我在某个地方做错了:)

最佳答案

您必须更改以下内容:

EditTextPreference muffin = (EditTextPrefernce) new SettingsFragment.findPreference(key)

致:

EditTextPreference muffin = (EditTextPrefernce) SettingsFragment.findPreference(key)

您只想在当前的 Fragment 中进行搜索,而不是创建新的 Fragment。

关于java - SettingsFragment().findPreference 始终返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28561163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com