我有一个AsyncTask,其中我创建了一个ViewPager,当我为它分配一个适配器时,会出现这个错误
java.lang.IllegalStateException:带有适配器com.example.kos.pagerAdapterzvon@646Addd的ViewPager在Androidx.fragment.app.fragmentPagerAdapter.Startupdate(fragmentPagerAdapter.java:83)在Androidx.ViewPager.widget.ViewPager.populate(ViewPager.java:1124)在Androidx.ViewPager.widget.ViewPager.populate(ViewPager.java:1092)在eChildWithMargins(ViewGroup.java:6834)在Android.Widget.FrameLayout.OnMeasure(FrameLayout.java:185)在Android.View.View.Measure(View.java:23466)在Android.View.View.Measure(View.java:23466)在Android.View.ViewGroup.Measure(View.java:6834)在AndroidX.CoordinatorLayout.Widget.CoordinatorLayout.OnMeasureChild(Android.Widget.LinearLayout.MeasureVertical(LinearLayout.java:847)位于Android.Widget.LinearLayout.OnMeasure(LinearLayout.java:726)位于Android.View.View.Measure(view.java:23466)位于Android.View.ViewGroup.MeasureChildWithMargins(viewGroup.java:6834)位于Android.Widget.FrameLayout.OnMeasure(FrameLayout.java:185)位于954)在Android.View.ViewRootimpl.MeasureHierarchy(ViewRootimpl.java:1753)在Android.View.ViewRootimpl.PerformTraversals(ViewRootimpl.java:2041)在Android.View.ViewRootimpl.DoTraversal(ViewRootimpl.java:1636)在Android.View.ViewRootimpl$TraversalRunnable.Run(ViewRootimpl.java:7946)在Android.View.Choreographer
异步任务
class StartAsyncTask extends AsyncTask<Void,String[],Void>{
@Override
protected void onPreExecute() {
super.onPreExecute();
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.gravity = Gravity.CENTER;
linearLayout.removeAllViews();
ProgressBar progressBar = new ProgressBar(context);
linearLayout.addView(progressBar, layoutParams);
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
LinearLayout.LayoutParams layoutParamsKek = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParamsKek.gravity = Gravity.CENTER;
linearLayout.removeAllViews();
ViewPager viewPager = new ViewPager(context);
viewPager.setAdapter(pagerAdapter);
linearLayout.addView(viewPager,layoutParamsKek);
// Date start = new Date();
// switch (start.toString().substring(0,3)) {
// case "Mon":
// viewPager.setCurrentItem(0);
// url = "Monday.txt";
// break;
// case "Tue":
// viewPager.setCurrentItem(1);
// url = "Tuesday.txt";
// break;
// case "Wed":
// viewPager.setCurrentItem(2);
// url = "Wednesday.txt";
// break;
// case "Thu":
// viewPager.setCurrentItem(3);
// url = "Thursday.txt";
// break;
// case "Fri":
// viewPager.setCurrentItem(4);
// url = "Friday.txt";
// break;
// case "Sat":
// viewPager.setCurrentItem(5);
// url = "Saturday.txt";
// break;
// default:
// viewPager.setCurrentItem(0);
// url = "Monday.txt";
// break;
// }
//// SharedPreferences.Editor editor = settings.edit();
//// editor.putString("Day", url);
//// editor.apply();
//// tabLayout.setupWithViewPager(viewPager);
//// tabLayout.setScrollX(tabLayout.getWidth());
//// tabLayout.getTabAt(5).select();
}
@Override
protected Void doInBackground(Void... voids) {
pagerAdapter = new PagerAdapterZvon(getActivity().getSupportFragmentManager());
return null;
}
}
转接器
class PagerAdapterZvon extends FragmentPagerAdapter {
private String[] name;
PagerAdapterZvon(@NonNull FragmentManager fm) {
super(fm);
name = new String[] {
"Понедельник",
"Вторник",
"Среда",
"Четверг",
"Пятница",
"Суббота"
};
}
@Override
public CharSequence getPageTitle(int position){
return name[position];
}
@Override
public int getCount() {
return 6;
}
@NonNull
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new classMonday();
case 1:
return new classTuesday();
case 2:
return new classWednesday();
case 3:
return new classThursday();
case 4:
return new classFriday();
case 5:
return new classSaturday();
default:
return null;
}
}
}
所有操作都发生在一个片段中,如果删除AsyncTask并将所有操作转移到onCreate中,则所有操作都正常工作
看来您是完全从代码而不是通过布局文件创建Viewpager,这就是为什么您会出现错误(需要视图id)。创建ViewPager时请按照此处的说明操作:
带有FragmentPagerAdapter的ViewPager
我有一个AsyncTask,在其中我创建了一个ViewPager,当我为它分配了一个适配器时,会出现这个错误 JAVAlang.IllegalStateException:带有适配器com的ViewPager。实例科斯。PagerAdapterZvon@646addd在androidx处需要视图id。碎片应用程序。碎裂翼翅。androidx上的startUpdate(FragmentPagerAd
问题内容: 我有一些碎片。每个片段具有在(=挥动之前不可见的)用。 适配器设置为,这会减慢刷卡速度,因为每次创建时都要载入30个列表项,因为正在创建新的片段。 我的问题是,在空闲时刷卡后是否可以设置适配器?或者,还有更好的方法?扩展SlideDrawer时,该列表需要已经加载。 问题答案: 我的问题是,是否可以在Pager闲置时刷卡后设置适配器? 还有就是,你可以在设置监控的滑动手势。然后,您可以
我正尝试使用实现的适配器,如下所示,正如这里的解决方案之一所建议的。
在我的应用程序中,我有标签的活动(让我们说10个标签)。每个选项卡页都包含和(此ListView中显示的数据是从我的服务器动态加载的)。我使用来显示这些页面。我不想将所有保存在内存中,所以我决定使用(我的适配器类扩展了这些类)。 > 假设选择了第三个选项卡。然后,当我转到第一个选项卡时,应该从头开始为该选项卡创建(这很好,这就是的工作方式),但不恢复该片段以前的状态(例如,不应该滚动到上次访问该时
我正在尝试使用PagerAdapter显示来自可绘制视图寻呼机的图像。为此,我编写了以下代码-- //调用PagerAdapter 下面是我的适配器类-- 下面是我的对话框 xml-- 下面是 ViewPager Item xml-- //下面是解释当前如何显示空的ViewPager的屏幕截图-- 当我调试应用程序时,一切似乎都很好,但不知道为什么图像没有显示在ViewPager中。请帮忙..
我正在寻找在Android中使用列表适配器和Recyview适配器的区别。关于性能的任何不同,使用它们的利弊。