我想做一个普通的PreferenceActivity(旧样式,没有标题),但是使用片段而不使用addPreferencesFromResource(id)
(因为弃用)。
现在我把它放在我的onCreate
:
getFragmentManager().beginTransaction().replace(android.R.id.content, new PreferencesFragment()).commit();
我的PreferencesFragment
看起来像这样:
public static class PreferencesFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
显然我也实现了isValidFragment
方法:
@Override
protected boolean isValidFragment(String fragmentName) {
return PreferencesFragment.class.getName().equals(fragmentName)
|| InnerFragment.class.getName().equals(fragmentName);
}
它的工作正常。但是,在PreferenceScreen
内preferences.xml
内有<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<!-- ... -->
<PreferenceScreen android:fragment="net.chaozspike.batterynotifier.SettingsActivity$InnerFragment"
android:summary="@string/settings_activity_prefs_display_night_mode_sum"
android:title="@string/settings_activity_prefs_display_night_mode" />
<!-- ... -->
</PreferenceScreen>
时出现问题:
R.id.content
我遇到以下问题:新的偏好设置屏幕显示在普通设置之上,我知道这可能是因为我更换了默认的function rightClickHandler (d, i) {
d3.json("connection6.php?paperID="+d.ID, function(error, dataJson) {
})
d3.select(this)
.style("fill", "blue");
libraryData.push(d);
console.log("I bet I'm second", libraryData);// updated
}
console.log("I bet I'm first", libraryData)// not updated
});
。截图:
但是我想在不使用弃用的东西或标题的情况下修复此问题。这有可能实现吗?
答案 0 :(得分:6)
只需使用print (dfinal)
A B C D E
0 LOCATION DATE1 DATE 1 1
1 LOCATION DATE5 DATE 1 1
2 LOCATION DATE DATE 1 1
3 LOCATION DATE DATE 1 1
t = "temp.dat"
stuff = 'stuff\n'
dfinal = dfinal.sort_values(by="B", ascending=True)
#write metadata
with open(t, "w") as f:
f.write(stuff)
f.write(stuff)
#append df to existing file filled by metadata
dfinal.to_csv(t, index=False, mode='a')
#omit first 2 metadata rows
df = pd.read_csv(t, header=2)
print (df)
A B C D E
0 LOCATION DATE DATE 1 1
1 LOCATION DATE DATE 1 1
2 LOCATION DATE1 DATE 1 1
3 LOCATION DATE5 DATE 1 1
和PreferenceActivity.EXTRA_SHOW_FRAGMENT
只显示一个片段并跳过标题:
PreferenceActivity.EXTRA_NO_HEADERS
答案 1 :(得分:1)
我自己发现了这个解决方案。如果我不打算创建基于片段的,基于头的SettingsActivity,但仍然不想使用弃用的方法,那么除了用于替换主视图的片段之外,我不得使用片段。换句话说,我必须删除InnerFragment
,因此我也可以删除isValidFragment
方法。我将其他XML文件中的所有代码移动到第一个代码中,如下所示:
第一个文件(旧):
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<!-- ... -->
<PreferenceScreen android:fragment="net.chaozspike.batterynotifier.SettingsActivity$InnerFragment"
android:summary="@string/settings_activity_prefs_display_night_mode_sum"
android:title="@string/settings_activity_prefs_display_night_mode" />
<!-- ... -->
</PreferenceScreen>
第一个文件(新):
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<!-- ... -->
<PreferenceScreen android:summary="@string/settings_activity_prefs_display_night_mode_sum"
android:title="@string/settings_activity_prefs_display_night_mode" >
<!-- Contents of second file here>
<CheckBoxPreference /> etc.
</PreferenceScreen>
<!-- ... -->
</PreferenceScreen>