Я пытаюсь добавить PreferenceFragment
в FragmentPagerAdapter
.
Мой класс расширяет FragmentActivity
, я пробовал FragmentTransaction
, как показано ниже, а также пытается добавить в контейнер и не может заставить ничего работать. Ошибок не возникает, на самом деле ничего не происходит.
Основная деятельность:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
}
activity_main.xml:
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
</android.support.v4.view.ViewPager>
Выбор меню "Мои настройки":
android.app.FragmentManager fm;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_settings:
JJSettings settings = new JJSettings();
fm = getFragmentManager();
FragmentTransaction fragTrans = fm.beginTransaction();
// I also tried `replace()` here as well. Same 'nothing happens' result.
fragTrans.add(settings, "settings");
fragTrans.commit();
return true;
case R.id.menu_help:
menuHelp();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Мои настройки Fragment
:
public class JJSettings extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
}
}
Мое предпочтение заключалось бы в том, чтобы придерживаться Fragments
, если это возможно, то есть я предпочел бы не распространять PreferenceActivity
или перевести пользователя в другое действие, которое вызывает PreferenceFragment
, если это вообще возможно. Я просто надеюсь, что я пропустил что-то в своих исследованиях.
Edit
public class SectionsPagerAdapter extends FragmentPagerAdapter {
private int _count = 2;
public SectionsPagerAdapter(FragmentManager fm) { super(fm); }
@Override
public Object instantiateItem(ViewGroup container, int position) {
return super.instantiateItem(container, position);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new JJMainFragment();
case 1:
return new JJPendingFragment();
default:
return null;
}
}
public void setCount(int count) { this._count = count; }
@Override
public int getCount() { return this._count; }
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return getString(R.string.c_list).toUpperCase(Locale.ENGLISH);
case 1:
return getString(R.string.c_pending).toUpperCase(Locale.ENGLISH);
}
return null;
}
}