Как использовать ViewFlipper (или) ViewSwitcher и TextSwitcher в той же активности..?

Im начинающий в android dev. Im способен реализовать textSwitcher и ViewSwitcher, но индивидуально в активности. Я хочу, чтобы они работали в одной и той же деятельности.

Этот код не дает мне ошибок в IDE, но его "Закрытие Force" в эмуляторе.

Код после импорта и все..

ViewFlipper vS1,vS2,vS3;
Button onep,twop,lose,win,help,settings,start,pick1,pick2;
int condn,total,max=5,min=1,rem;
TextSwitcher minte,maxte,select1,select2,coinsrem;

@Override

public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 // Animations

 Animation in = AnimationUtils.loadAnimation(this,
 android.R.anim.slide_in_left);
 Animation out = AnimationUtils.loadAnimation(this,
 android.R.anim.slide_out_right);

// Text Views ----
 minte.findViewById(R.id.min);
 maxte.findViewById(R.id.max);

 minte.setFactory(new TextSwitcherFactory());
 maxte.setFactory(new TextSwitcherFactory());

 minte.setText("Hello");

 // switching Views ----

 vS1 =(ViewFlipper) findViewById(R.id.vs1);
 vS2 =(ViewFlipper) findViewById(R.id.vs2);
 vS3 =(ViewFlipper) findViewById(R.id.vs3);

 vS1.setInAnimation(in);
 vS1.setOutAnimation(out);
 vS2.setInAnimation(in);
 vS2.setOutAnimation(out);
 vS3.setInAnimation(in);
 vS3.setOutAnimation(out);

 // create RangeSeekBar as Integer range between 20 and 75
 RangeSeekBar<integer> seekBar = new RangeSeekBar<integer>(20, 75, getBaseContext());
 seekBar.setOnRangeSeekBarChangeListener(this);

 // add RangeSeekBar to pre-defined layout
 ViewGroup layout = (ViewGroup) findViewById(R.id.rangeseek);
 layout.addView(seekBar);

 //----buttons-------------------------

 win = (Button)findViewById(R.id.win);
 lose = (Button)findViewById(R.id.loses);

 win.setOnClickListener(this);
 lose.setOnClickListener(this);

 //----buttons end----------------------
 //---Animating the views---



}







@Override
public void rangeSeekBarValuesChanged(Integer minValue, Integer maxValue) {
 // TODO Auto-generated method stub

}







public void onClick(View v) {
 // TODO Auto-generated method stub
 switch(v.getId())
 {

 case R.id.win:
 condn = 1;
 vS2.showNext();

 break;
 case R.id.loses :
 condn =0;
 vS2.showNext();

 break;



 }
}

public class TextSwitcherFactory implements ViewSwitcher.ViewFactory{

 @Override
 public View makeView() {
 // TODO Auto-generated method stub
 TextView t = new TextView(LastActivity.this);
 t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
 t.setTextSize(36);
 t.setTextColor(Color.argb(255, 255, 204, 51));
 return t; }

}
</integer></integer>
2 ответа

minte.findViewById(R.id.min); 
maxte.findViewById(R.id.max);

не имеет смысла...

Вы должны инициализировать их так:

minte =(TextSwitcher) findViewById(R.id.min);


Из вашего кода, похоже, вы пытаетесь инициализировать 3 отдельных ViewFlippers и переключаться между ними. Это не так. ViewFlipper (или ViewSwitcher) является расширением класса FrameLayout. Таким образом, он будет показывать только одно детское представление за раз.

Чтобы исправить ваш код, определите только один ViewFlipper. При этом определите 3 вида (то есть RelativeLayout, LinearLayout и т.д.), Которые вы хотите переключить.

Кроме того, похоже, что вы тоже пытаетесь сделать анимацию. Таким образом, вы можете в конечном итоге использовать вместо этого класс ViewAnimator, который является только родительским классом ViewFlipper.

Google для некоторых учебных пособий. Там есть хорошие.

Надеюсь, это помогло!

licensed under cc by-sa 3.0 with attribution.