EDIT3: có vẻ như chỉ API17 trở lên sẽ có ViewPager hoạt động bình thường với ChildFragmentManager .........ViewPager trong DialogFragment, IllegalStateException: Fragment không có một cái nhìn
Tôi đang cố gắng để thêm một ViewPager
để DialogFragment tôi:
public class FirstLaunchDialogFragment extends DialogFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NORMAL, R.style.Theme_Sherlock_Light_Dialog);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final View v = getActivity().getLayoutInflater().inflate(
R.layout.fragment_dialog_first_launch, null);
ViewPager viewPager = (ViewPager) v.findViewById(R.id.pager);
viewPager.setAdapter(new FirstLaunchFragmentsAdapter(getChildFragmentManager()));
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setView(v).setInverseBackgroundForced(true);
return builder.create();
}
}
và đối với một số lý do, nó sẽ sụp đổ nói:
04-06 00:00:49.600: E/AndroidRuntime(3734): java.lang.IllegalStateException: Fragment does not have a view
04-06 00:00:49.600: E/AndroidRuntime(3734): at android.support.v4.app.Fragment$1.findViewById(Fragment.java:1425)
04-06 00:00:49.600: E/AndroidRuntime(3734): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:901)
04-06 00:00:49.600: E/AndroidRuntime(3734): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
04-06 00:00:49.600: E/AndroidRuntime(3734): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
04-06 00:00:49.600: E/AndroidRuntime(3734): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
04-06 00:00:49.600: E/AndroidRuntime(3734): at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461)
.....
Tôi đã googling cho Fragment does not have a view
ngoại lệ cho một nửa ngày nay không có kết quả
Dường như với tôi rằng Adaptor không thể thổi phồng bố trí hoặc một cái gì đó ...
Dưới đây là Fragment và Adaptor tôi
public static class UserWelcomeFragment extends Fragment {
public static UserWelcomeFragment newInstance() {
return new UserWelcomeFragment();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_welcome_user, container, false);
return v;
}
}
private class FirstLaunchFragmentsAdapter extends FragmentPagerAdapter {
public FirstLaunchFragmentsAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int arg0) {
switch (arg0) {
case 0:
return UserWelcomeFragment.newInstance();
case 1:
return new IntegrationSelectingDialogFragment();
default:
return UserWelcomeFragment.newInstance();
}
}
@Override
public int getCount() {
return 2;
}
}
EDIT: https://code.google.com/p/android/issues/detail?id=42601 trông có liên quan
EDIT2: tôi đang thử nghiệm trên API 16 và dự án được sử dụng thư viện hỗ trợ v4 sửa đổi 12
Tôi đang sử dụng API 16 nhưng tôi cũng đang sử dụng Thư viện hỗ trợ v4, thư viện hỗ trợ có nên thực hiện triển khai của tôi tương thích với các phiên bản API thấp hơn không? – tom91136