0

Children of ViewpagerAndroid ViewPager, нажмите кнопку или любой otherthing о ViewPager

хорошо вы можете видеть на картинке. кнопки работают неправильно. И как эта проблема возникает, я не понимаю.

Я делаю приложение для викторины. если пользователь нажимает неправильный ответ, я хочу сделать цвет фона кнопок, красный, иначе нажмите правильный ответ, цвет фона кнопки будет зеленым.

на первой странице, которая выбрана пользователем из списка, кнопки работают нормально. после прокрутки страниц кнопки работают неправильно. всегда он меняет цвет кнопки предыдущей страницы.

Я думаю, что причина этого заключается в том, что viewpager не знает, какой цвет кнопки должен измениться после моего метода управления.

это мой метод управления в ViewPager деятельности:

public void click(View v) { 

      int c = 0; 
      switch (v.getId()) { 
      case R.id.cevap1a: 
       c = 1; 
       controlanswer(c); 
       break; 
      case R.id.cevap2b: 
       c = 2; 
       controlanswer(c); 
       break; 
      case R.id.cevap3c: 
       c = 3; 
       controlanswer(c); 
       break; 
      case R.id.cevap4d: 
       c = 4; 
       controlanswer(c); 
       break; 
      case R.id.cevap5e: 
       c = 5; 
       controlanswer(c); 
       break; 
      default: 
       break; 
      } 
     } 

    public void controlanswer(int a) { 

      int d = mViewPager.getCurrentItem(); 
      int answer = mquestiondatabase.get(d).gettrueanswer(); 


      if (a == answer) { 

       truecolor(a); 

      } else { 

       wrongcolor(a); 
       truecolor(answer); 

      } 
     } 

     public void wrongcolor(int wrong) { 
      cevapA = (TextView) mViewPager.findViewById(R.id.cevap1a); 
      cevapB = (TextView) mViewPager.findViewById(R.id.cevap2b); 
      cevapC = (TextView) mViewPager.findViewById(R.id.cevap3c); 
      cevapD = (TextView) mViewPager.findViewById(R.id.cevap4d); 
      cevapE = (TextView) mViewPager.findViewById(R.id.cevap5e); 

      switch (wrong) { 

      case 1: 
       cevapA.setBackgroundResource(R.drawable.red_buton_clicked); 
       break; 
      case 2: 
       cevapB.setBackgroundResource(R.drawable.red_buton_clicked); 
       break; 
      case 3: 
       cevapC.setBackgroundResource(R.drawable.red_buton_clicked); 
       break; 
      case 4: 
       cevapD.setBackgroundResource(R.drawable.red_buton_clicked); 
       break; 
      case 5: 
       cevapE.setBackgroundResource(R.drawable.red_buton_clicked); 
       break; 

      default: 
       break; 
      } 
     } 

     public void truecolor(int answer) { 

      cevapA = (TextView) findViewById(R.id.cevap1a); 
      cevapB = (TextView) findViewById(R.id.cevap2b); 
      cevapC = (TextView) findViewById(R.id.cevap3c); 
      cevapD = (TextView) findViewById(R.id.cevap4d); 
      cevapE = (TextView) findViewById(R.id.cevap5e); 


      AnimationDrawable rocketAnimation; 
      switch (answer) { 

      case 1: 

       cevapA.setBackgroundResource(R.drawable.yesilflash); 
       rocketAnimation = (AnimationDrawable) cevapA.getBackground(); 
       rocketAnimation.start(); 
       break; 
      case 2: 

       cevapB.setBackgroundResource(R.drawable.yesilflash); 
       rocketAnimation = (AnimationDrawable) cevapB.getBackground(); 
       rocketAnimation.start(); 
       break; 
      case 3: 

       cevapC.setBackgroundResource(R.drawable.yesilflash); 
       rocketAnimation = (AnimationDrawable) cevapC.getBackground(); 
       rocketAnimation.start(); 
       break; 
      case 4: 
       cevapD.setBackgroundResource(R.drawable.yesilflash); 
       rocketAnimation = (AnimationDrawable) cevapD.getBackground(); 
       rocketAnimation.start(); 
       break; 
      case 5: 

       cevapE.setBackgroundResource(R.drawable.yesilflash); 
       rocketAnimation = (AnimationDrawable) cevapE.getBackground(); 
       rocketAnimation.start(); 
       break; 

      default: 
       break; 
      } 
     } 
    } 

Ну я совмещаю мой старый вопрос в одном вопросе

+0

что в вашем LogCat? какое точное сообщение об ошибке вы получаете? – agamov

+0

хорошо нет ошибок. – mehmet

ответ

0

Ну я решил.

Основная проблема заключается в том, что я написал свой код во фрагментации. но после этого я подозрительно это и поместил все мои коды в фрагмент.

Я думаю, что это был хороший пример использования viewpager.

public class newFragment extends Fragment { 

public static final String ExtraID = "com.num"; 
public static ViewPager mViewPager; 
private static String tag = "sqllist"; 

int sayfano; 
private int c = 0; 
int mNum2; 
soru msoru; 
TextView baslik; 
TextView aciklama; 
TextView soru; 
TextView cevapA; 
TextView cevapB; 
TextView cevapC; 
TextView cevapD; 
TextView cevapE; 
CheckBox mSolvedCheckBox; 

public static newFragment newInstance(int num) { 

    Bundle args = new Bundle(); 
    args.putInt("num", num); 
    newFragment fragment = new newFragment(); 
    fragment.setArguments(args); 
    return fragment; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(true); 
    mNum2 = (int) getArguments().getInt("num"); 
    TestAdapter mDbHelper = new TestAdapter(getActivity()); 
    mDbHelper.createDatabase(); 
    mDbHelper.open(); 
    List<soru> mSorus = mDbHelper.getTestData(); 
    msoru = mSorus.get(mNum2); 

    int v = newPagerActivity.sayfano(); 
    Log.d(tag, "crime fragment on create mnum= " + v + "v = " + v); 

} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case android.R.id.home: 
     if (NavUtils.getParentActivityName(getActivity()) != null) { 
      NavUtils.navigateUpFromSameTask(getActivity()); 
     } 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 

} 

@TargetApi(Build.VERSION_CODES.HONEYCOMB) 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup parent, 
     Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.fragment_crime, parent, false); 

    aciklama = (TextView) v.findViewById(R.id.aciklama); 
    soru = (TextView) v.findViewById(R.id.soru); 
    cevapA = (TextView) v.findViewById(R.id.cevap1a); 
    cevapB = (TextView) v.findViewById(R.id.cevap2b); 
    cevapC = (TextView) v.findViewById(R.id.cevap3c); 
    cevapD = (TextView) v.findViewById(R.id.cevap4d); 
    cevapE = (TextView) v.findViewById(R.id.cevap5e); 
    baslik = (TextView) v.findViewById(R.id.baslik); 

    try { 
     baslik.setText(msoru.getmId() + ". Soru"); 
     aciklama.setText(msoru.getmTitle().toString()); 
     soru.setText(msoru.getmSoru().toString()); 
     cevapA.setText("A) " + msoru.getmCevap1().toString()); 
     cevapB.setText("B) " + msoru.getmCevap2().toString()); 
     cevapC.setText("C) " + msoru.getmCevap3().toString()); 
     cevapD.setText("D) " + msoru.getmCevap4().toString()); 
     cevapE.setText("E) " + msoru.getmCevap5().toString()); 
    } catch (Exception e) { 
     Log.d(tag, "bir kısım kendini bilmez soru kısımcıkları kaybolmuş"); 
     e.printStackTrace(); 
    } 

    cevapA.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      c = 0; 
      cevapanahtari(c); 
     } 
    }); 

    cevapB.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      c = 1; 
      cevapanahtari(c); 
     } 
    }); 
    cevapC.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      c = 2; 
      cevapanahtari(c); 
     } 
    }); 
    cevapD.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      c = 3; 
      cevapanahtari(c); 
     } 
    }); 
    cevapE.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      c = 4; 
      cevapanahtari(c); 
     } 
    }); 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
     if (NavUtils.getParentActivityName(getActivity()) != null) 
      getActivity().getActionBar().setDisplayHomeAsUpEnabled(true); 
    } 
    return v; 

} 

public void cevapanahtari(int a) { 

    int d = newPagerActivity.getViewPager(); 
    int cevap = msoru.getCevapanahtari(); 


    if (a == cevap) { 
     Log.d(tag, "cevapanahtarı if"); 
     renkdogru(a); 

    } else { 
     Log.d(tag, "cevapanahtarı else"); 
     renkyanlis(a); 
     renkdogru(cevap); 

    } 
} 

public void renkyanlis(int yanlis) { 
    Log.d(tag, "renkyanlis" + yanlis); 
    switch (yanlis) { 

    case 1: 
     cevapA.setBackgroundResource(R.drawable.red_buton_clicked); 
     break; 
    case 2: 
     cevapB.setBackgroundResource(R.drawable.red_buton_clicked); 
     break; 
    case 3: 
     cevapC.setBackgroundResource(R.drawable.red_buton_clicked); 
     break; 
    case 4: 
     cevapD.setBackgroundResource(R.drawable.red_buton_clicked); 
     break; 
    case 5: 
     cevapE.setBackgroundResource(R.drawable.red_buton_clicked); 
     break; 

    default: 
     break; 
    } 
} 

public void renkdogru(int tiklanancevap) { 

    AnimationDrawable rocketAnimation; 
    switch (tiklanancevap) { 

    case 1: 
     Log.d(tag, "rendogru case 1"); 
     cevapA.setBackgroundResource(R.drawable.yesilflash); 
     rocketAnimation = (AnimationDrawable) cevapA.getBackground(); 
     rocketAnimation.start(); 
     break; 
    case 2: 
     cevapB.setBackgroundResource(R.drawable.yesilflash); 
     rocketAnimation = (AnimationDrawable) cevapB.getBackground(); 
     rocketAnimation.start(); 
     break; 
    case 3: 
     cevapC.setBackgroundResource(R.drawable.yesilflash); 
     rocketAnimation = (AnimationDrawable) cevapC.getBackground(); 
     rocketAnimation.start(); 
     break; 
    case 4: 
     cevapD.setBackgroundResource(R.drawable.yesilflash); 
     rocketAnimation = (AnimationDrawable) cevapD.getBackground(); 
     rocketAnimation.start(); 
     break; 
    case 5: 
     cevapE.setBackgroundResource(R.drawable.yesilflash); 
     rocketAnimation = (AnimationDrawable) cevapE.getBackground(); 
     rocketAnimation.start(); 
     break; 

    default: 
     break; 
    } 
} 

}

На otherhand это мой новый фрагмент активности

public class newPagerActivity extends FragmentActivity { 
public static ViewPager mViewPager; 
private int sorusirasi; 
private List<soru> mSorus; 
final String tag = "anahtar"; 
soru mSoruchec; 
public static int c=1; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


    mViewPager = new ViewPager(this); 
    mViewPager.setId(R.id.viewPager); 
    setContentView(mViewPager); 
    TestAdapter mDbHelper = new TestAdapter(this); 
    mDbHelper.createDatabase(); 
    mDbHelper.open(); 
    mSorus = mDbHelper.getTestData(); 

    Log.d(tag, "fragment activit yaratıldı"); 


    FragmentManager fm = getSupportFragmentManager(); 
    mViewPager.setAdapter(new FragmentStatePagerAdapter(fm) { 

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

     @Override 
     public Fragment getItem(int sorusirasi) { 

      return newFragment.newInstance(sorusirasi); 
     } 
    }); 

    sorusirasi = getIntent().getIntExtra("num", 0); 
    for (int i = 1; i < mSorus.size(); i++) { 
     if (mSorus.get(i).getmId() == sorusirasi) { 
      mViewPager.setCurrentItem(i); 
      break; 
     } 
    } 
} 
public static int sayfano(){ 

    return c; 

} 

public static int getViewPager() { 
     return mViewPager.getCurrentItem(); 
    } 

}

Смежные вопросы