Tôi đang cố thêm PreferenceFragment
vào FragmentPagerAdapter
.Thêm Ưu tiênPhân tích vào FragmentPagerAdapter
Lớp học của tôi mở rộng FragmentActivity
, tôi đã thử FragmentTransaction
, như được hiển thị bên dưới cũng như cố gắng thêm vào vùng chứa và dường như không có gì để làm việc. No lỗi được ném, trên thực tế không có gì xảy ra.
Hoạt động chính:
@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>
menu Tùy chọn của tôi lựa chọn:
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);
}
}
Cài đặt của tôiFragment
:
public class JJSettings extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
}
}
sở thích của tôi sẽ gắn bó với Fragments
nếu có thể, có nghĩa là tôi không muốn mở rộng PreferenceActivity
hoặc đưa người sử dụng khác Hoạt động mà các cuộc gọi PreferenceFragment
, nếu ở tất cả khả thi. Tôi chỉ hy vọng tôi đã bỏ lỡ điều gì đó trong nghiên cứu của mình.
Sửa
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;
}
}
Bạn có thể gửi mã SectionsPagerAdapter của bạn? – Karakuri
@Karakuri Added, Không chắc chắn 100% lý do tại sao bạn muốn xem nó, tôi không muốn thêm các thiết lập/sở thích vào 'ViewPager'. – jnthnjns