코드의이 부분을 실행할 때 해시 맵이 비어 있기 때문에 IndexOutOfBoundException이 발생합니다. 디버거에서 확인했습니다. 왜 그것이 비어 있는지 설명해 주시겠습니까? 데이터로 채우고 있지만 제대로 작동하지 않습니다.해시 맵이 비어 있습니다.
public class ScheduleActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.schedule_activity);
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
viewPager.setAdapter(new SchedulePagerAdapter(getFragmentManager()));
}
}
class SchedulePagerAdapter extends FragmentPagerAdapter {
public SchedulePagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return DayFragment.newInstance();
}
@Override
public CharSequence getPageTitle(int position) {
ArrayList<String> arrayList = new ArrayList<>();
for (String key : LessonsMap.lessons.keySet()) {
arrayList.add(key);
}
return arrayList.get(position);
}
@Override
public int getCount() {
return 6;
}
}
class LessonsMap {
public static Map<String, String> lessons = new HashMap<String, String>();
public LessonsMap() {
lessons.put("Monday", "Test_Data");
lessons.put("Tuesday", "Test_Data");
lessons.put("Wednesday", "Test_Data");
lessons.put("Thursday", "Test_Data");
lessons.put("Friday", "Test_Data");
lessons.put("Saturday", "Test_Data");
}
}
고마워요!
'당신'LessonsMap.lessons.keySet을 (수행 할 때 lessons'가 아직 데이터가 작성되지 않았습니다) ': 정적
lessons
을 유지하려는 경우그렇지 않으면, 당신은 여기에 설명 된 방법 중 하나를 사용하여 초기화한다 이것은 정적 필드이기 때문에 생성자에서 채 웁니다. 이 기능을 사용하려면'LessonsMap' 클래스의'static' 블록에서'lessons' 맵을 초기화해야합니다. @ArolaAb 응답도 유효합니다. – myhau
사이드 엣지 : 처음부터 정적을 사용하지 마십시오. 실제 객체를 인스턴스화하고 해당 객체에 대한 메소드를 호출합니다. – GhostCat