所以我正在使用芯片导航栏https://github.com/ismaeldivita/chip-navigation-bar,并且我希望它也显示在首选项屏幕中。我设法做到了,但是当在“首选项”屏幕中不再可用时,如果在屏幕上滚动,导航栏会与“首选项”屏幕混合在一起: preferenceScreen.png
MainActivity.java
def my_func(df,levels, values):
# Code using query
m = dict(zip(levels,values))
#create expression to use in the query method
expr = " and ".join(f"{k}=={v!r}" for k,v in m.items())
ret = df.query(expr)
return ret
#function application
my_func(s, ['p1'],['bar'])
0
p1 p2 p3
bar one green -0.087366
two green 1.126620
three blue 0.868515
my_func(s, ['p1','p2'],['bar','one'])
0
p1 p2 p3
bar one green -0.087366
SettingsFragment.java
public class MainActivity extends AppCompatActivity {
ChipNavigationBar bottomNav;
FragmentManager fragmentManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bottomNav = findViewById(R.id.bottom_nav);
if ( savedInstanceState==null){
bottomNav.setItemSelected(R.id.home, true);
fragmentManager = getSupportFragmentManager();
HomeFragment homeFragment = new HomeFragment();
fragmentManager.beginTransaction()
.replace(R.id.fragment_container, homeFragment)
.commit();
}
bottomNav.setOnItemSelectedListener(new ChipNavigationBar.OnItemSelectedListener() {
private final String TAG = MainActivity.class.getSimpleName();
@Override
public void onItemSelected(int id) {
Fragment fragment = null;
switch (id) {
case R.id.home:
fragment = new HomeFragment();
break;
case R.id.sleep:
fragment = new SleepFragment();
break;
case R.id.settings:
fragment = new SettingsFragment();
break;
}
if(fragment != null) {
fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.fragment_container, fragment)
.commit();
}
}
});
}
}
settings.xml
public class SettingsFragment extends Fragment {
public SettingsFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActivity().invalidateOptionsMenu();
getActivity().getFragmentManager().beginTransaction()
.replace(android.R.id.content, new MyPreferenceFragment())
.commit();
}
public static class MyPreferenceFragment extends PreferenceFragment {
public MyPreferenceFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
}
@Override
public void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(preferenceChangeListener);
}
@Override
public void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(preferenceChangeListener);
}
}
}