我的应用有两个独立的视图,最初使用TabHost分隔。我决定切换到ViewPager,使应用程序更具视觉吸引力。
但是现在应用程序一开始就崩溃了。现在,如果我注释掉关于微调器小部件和数组的所有线条,那么一切都很好,但对于我的生活,我无法弄清楚它们为什么会引起任何问题。他们使用TabHost设置工作得很好。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//context.startService(serviceIntent);
startService(new Intent(this, MY_Service.class));
setContentView(R.layout.main);
MyPagerAdapter adapter = new MyPagerAdapter();
ViewPager myPager = (ViewPager) findViewById(R.id.wedgpager);
myPager.setAdapter(adapter);
myPager.setCurrentItem(0);
}
PagerAdapter类:
live_view只有一个按钮,其中有一个onClick侦听器在别处定义。
private class MyPagerAdapter extends PagerAdapter {
public int getCount() {
return 2;
}
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int resId = 0;
switch (position) {
case 0:
resId = R.layout.live_view;
break;
case 1:
resId = R.layout.pod_view;
// Capture the textview elements
mCurrentDate = (TextView) findViewById(R.id.currentdateDisplay);
mSelectedDate = (TextView) findViewById(R.id.selecteddateDisplay);
TextTotalTime = (TextView) findViewById(R.id.TotalTimeText);
TextCurrentTime = (TextView) findViewById(R.id.CurrentTimeText);
// Retrieve the current date
Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
Spinner datespinner = (Spinner) findViewById(R.id.spinnerdate);
ArrayAdapter<CharSequence> dateadapter = new ArrayAdapter<CharSequence>(app_Live.this, android.R.layout.simple_spinner_item);
dateadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
int ArrayMarker = 0;
for (int podtest = 1; podtest < 15; podtest++) {
MakeDateList(podtest);
if (dayOfWeek != (1|7)) {
podFileTest = cMonthName + " " + cDay + ", " + cYear;
podDatesName[ArrayMarker] = podFileTest;
String cYearTemp = cYear + "";
String cMonthTemp = cMonth + "";
if (cMonth < 10) {
cMonthTemp = cMonthTemp.replace("0", "");
cMonthTemp = "0" + cMonthTemp;
}
if (cDay > 9) {
podDates[ArrayMarker] = (cMonthTemp + "" + cDay + "" + cYearTemp.replace("20", ""));
}
if (cDay <= 9) {
podDates[ArrayMarker] = (cMonthTemp + "" + "0" + cDay + "" + cYearTemp.replace("20", ""));
}
ArrayMarker++;
}
if (dayOfWeek == (1|7) && (ArrayMarker > 0)) {
ArrayMarker--;
}
}
for (int buildtext = 0; buildtext < 10; buildtext++) {
dateadapter.add(podDatesName[buildtext]);
}
/* datespinner.setAdapter(dateadapter);
Spinner hourspinner = (Spinner) findViewById(R.id.spinnerhour);
ArrayAdapter<CharSequence> houradapter = ArrayAdapter.createFromResource(app_Live.this, R.array.hour_array, android.R.layout.simple_spinner_item);
houradapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
hourspinner.setAdapter(houradapter);
// Display the current date under "Today's Date" at the top
updateCurrentDate();
datespinner.setOnItemSelectedListener(new DateOnItemSelectedListener());
hourspinner.setOnItemSelectedListener(new HourOnItemSelectedListener());
Button podplaybutton = (Button)findViewById(R.id.button_pod_play);
//podplaybutton.setOnClickListener(this);*/
break;
}
View view = inflater.inflate(resId, null);
((ViewPager) collection).addView(view, 0);
return view;
}
这是LogCat的第一个错误:
01-16 22:13:24.279:W / dalvikvm(20182):threadid = 1:线程退出,未捕获异常(group = 0x40a461f8) 01-16 22:13:24.384:E / AndroidRuntime(20182):致命异常:主要 01-16 22:13:24.384:E / AndroidRuntime(20182):android.content.res.Resources $ NotFoundException:资源ID#0x0 01-16 22:13:24.384:E / AndroidRuntime(20182):在android.content.res.Resources.getValue(Resources.java:1019) 01-16 22:13:24.384:E / AndroidRuntime(20182):在android.content.res.Resources.loadXmlResourceParser(Resources.java:2107)
答案 0 :(得分:0)
好的,所以Selvin向我指出的答案是我没有把事情按顺序排列。我需要在View
声明之前发起switch
,然后不要只是致电findViewById
我需要放view.findViewById
这是我现在正在使用的更新代码:(顺便说一下,如果有人知道更清晰的方式来编写当天提前14天的代码段,请随时告诉我们)
private class MyPagerAdapter extends PagerAdapter {
public int getCount() {
return 2;
}
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int resId = 0;
View view = null;
switch (position) {
case 0:
resId = R.layout.live_view;
view = inflater.inflate(resId, null);
break;
case 1:
resId = R.layout.pod_view;
view = inflater.inflate(resId, null);
// Capture the textview elements
mCurrentDate = (TextView) view.findViewById(R.id.currentdateDisplay);
mSelectedDate = (TextView) view.findViewById(R.id.selecteddateDisplay);
TextTotalTime = (TextView) view.findViewById(R.id.TotalTimeText);
TextCurrentTime = (TextView) view.findViewById(R.id.CurrentTimeText);
// Retrieve the current date
Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
Spinner datespinner = (Spinner) view.findViewById(R.id.spinnerdate);
ArrayAdapter<CharSequence> dateadapter = new ArrayAdapter<CharSequence>(app_Live.this, android.R.layout.simple_spinner_item);
dateadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
int ArrayMarker = 0;
for (int podtest = 1; podtest < 15; podtest++) {
MakeDateList(podtest);
if (dayOfWeek != (1|7)) {
podFileTest = cMonthName + " " + cDay + ", " + cYear;
podDatesName[ArrayMarker] = podFileTest;
String cYearTemp = cYear + "";
String cMonthTemp = cMonth + "";
if (cMonth < 10) {
cMonthTemp = cMonthTemp.replace("0", "");
cMonthTemp = "0" + cMonthTemp;
}
if (cDay > 9) {
podDates[ArrayMarker] = (cMonthTemp + "" + cDay + "" + cYearTemp.replace("20", ""));
}
if (cDay <= 9) {
podDates[ArrayMarker] = (cMonthTemp + "" + "0" + cDay + "" + cYearTemp.replace("20", ""));
}
ArrayMarker++;
}
if (dayOfWeek == (1|7) && (ArrayMarker > 0)) {
ArrayMarker--;
}
}
for (int buildtext = 0; buildtext < 10; buildtext++) {
dateadapter.add(podDatesName[buildtext]);
}
datespinner.setAdapter(dateadapter);
Spinner hourspinner = (Spinner) view.findViewById(R.id.spinnerhour);
ArrayAdapter<CharSequence> houradapter = ArrayAdapter.createFromResource(app_Live.this, R.array.hour_array, android.R.layout.simple_spinner_item);
houradapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
hourspinner.setAdapter(houradapter);
// Display the current date under "Today's Date" at the top
updateCurrentDate();
datespinner.setOnItemSelectedListener(new DateOnItemSelectedListener());
hourspinner.setOnItemSelectedListener(new HourOnItemSelectedListener());
Button podplaybutton = (Button)findViewById(R.id.button_pod_play);
//podplaybutton.setOnClickListener(this);*/
break;
}
((ViewPager) collection).addView(view, 0);
return view;
}