Задать вопрос
@KnightForce

Не могу запустить Activity. Что делать?

Не могу запустить Activity никаким способом.

public class CrimePagerActivity extends FragmentActivity {
private ViewPager mViewPager;
private ArrayList mCrimes;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mViewPager = new ViewPager(this);
mViewPager.setId(R.id.viewPager);
setContentView(mViewPager);

mCrimes = CrimeLab.get(this).getCrimes();
FragmentManager fm = getSupportFragmentManager();

mViewPager.setAdapter(new FragmentStatePagerAdapter(fm) {

@Override
public Fragment getItem(int pos) {
Crime crime = mCrimes.get(pos);
return CrimeFragment.newInstance(crime.getId());
}

@Override
public int getCount() {
return mCrimes.size();
}
});

UUID crimeId = (UUID)getIntent()
.getSerializableExtra(CrimeFragment.EXTRA_CRIME_ID);
for (int i = 0; i < mCrimes.size(); i++) {
if (mCrimes.get(i).getId().equals(crimeId)) {
mViewPager.setCurrentItem(i);
break;
}
}

mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
public void onPageScrollStateChanged(int state) {}
public void onPageScrolled(int pos, float posOffset, int posOffsetPixels) {}
public void onPageSelected(int pos) {
Crime crime = mCrimes.get(pos);
if (crime.getTitle() != null) {
setTitle(crime.getTitle());
}
}
});
}
}

Методом проб и ошибок выяснил что проблема в данном участке кода (если его убрать, то она запускается):

mViewPager.setAdapter(new FragmentStatePagerAdapter(fm) {

@Override
public Fragment getItem(int pos) {
Crime crime = mCrimes.get(pos);
return CrimeFragment.newInstance(crime.getId());
}

@Override
public int getCount() {
return mCrimes.size();
}
});

UUID crimeId = (UUID)getIntent()
.getSerializableExtra(CrimeFragment.EXTRA_CRIME_ID);
for (int i = 0; i < mCrimes.size(); i++) {
if (mCrimes.get(i).getId().equals(crimeId)) {
mViewPager.setCurrentItem(i);
break;
}
}

mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
public void onPageScrollStateChanged(int state) {}
public void onPageScrolled(int pos, float posOffset, int posOffsetPixels) {}
public void onPageSelected(int pos) {
Crime crime = mCrimes.get(pos);
if (crime.getTitle() != null) {
setTitle(crime.getTitle());
}
}
});

Подскажите в чем проблема? Раньше все работало.

Код который запускает активность:

public boolean onOptionsItemSelected(MenuItem item) {

switch(item.getItemId()) {
case R.id.menu_item_new_crime:
Crime crime = new Crime();
CrimeLab.get(getActivity()).addCrime(crime);
Intent i = new Intent(getActivity(), CrimePagerActivity.class);
i.putExtra(CrimeFragment.EXTRA_CRIME_ID, crime.getId());
startActivityForResult(i, 0);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
  • Вопрос задан
  • 306 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
Dmitrich
@Dmitrich
Android apps developer
Вы случайно не книжку Брайна Харди и Билла Филипса изучаете? Знакомый код, недавно разбирал. Скиньте весь проект, например на гитхаб, по свободе помогу, а то у вас тут части классов нет. Либо можете у меня посмотреть такой же код , у меня активность запускается из фрагмента CrimeListFragment.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы