Проблема с TextSwitcher

Интерфейс, диалоги, темы, стили, меню
Ответить
Аватара пользователя
IriDolG
Сообщения: 46
Зарегистрирован: 10 фев 2014, 09:23

Проблема с TextSwitcher

Сообщение IriDolG » 27 фев 2014, 12:36

Нашла в сети коды по установке textswitcher, но, как их не изменяю, но в нем что-то не то - красным подчеркивает ViewSwitcher.

Код: Выделить всё

package com.exambple.vgg;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.TextSwitcher;
import android.widget.TextView;
import android.widget.ViewSwitcher.ViewFactory;

public class MainActivity extends Activity implements
ViewSwitcher.ViewFactory, ViewFactory {

private TextSwitcher mSwitcher;
private int mCounter = 0; 

private TextSwitcher textSwitcher;
private Button b;

String myContent[]={"A","B","C","D"};

//used to keep track of text index
int currentIndex=-1; 

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    textSwitcher = (TextSwitcher)findViewById(R.id.textSwitcher);
    b= (Button)findViewById(R.id.btn1);

    //set ViewFactory of TextSwitcher to dynamically create TextView
    textSwitcher.setFactory(new ViewFactory() {

        public View makeView() {
            // TODO Auto-generated method stub
            // create new textView 
            TextView myText = new TextView(MainActivity.this);
            myText.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
            myText.setTextSize(42);
            myText.setTextColor(Color.RED);
            return myText;
        }
    });

    // Declare the in and out animations
    Animation in = AnimationUtils.loadAnimation(this,android.R.anim.slide_in_left);
    Animation out = AnimationUtils.loadAnimation(this,android.R.anim.slide_out_right);

    // set the animation of textSwitcher
    textSwitcher.setInAnimation(in);
    textSwitcher.setOutAnimation(out);

    //button click
    b.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            currentIndex++;
            // If index reaches maximum reset it
            if(currentIndex==myContent.length)
                currentIndex=0;
            textSwitcher.setText(myContent[currentIndex]);
        }
    });

}

@Override
public View makeView() {
	// TODO Auto-generated method stub
	return null;
}
}
Добавляла implements ViewSwitcher к активити, но все равно не помогло.
Когда-нибудь я научусь!

WizikTLT
Сообщения: 52
Зарегистрирован: 01 ноя 2013, 13:30

Re: Проблема с TextSwitcher

Сообщение WizikTLT » 27 фев 2014, 13:23

У меня вроде все ок - только убрал из implements ViewSwitcher.ViewFactory т.к лишний

Аватара пользователя
IriDolG
Сообщения: 46
Зарегистрирован: 10 фев 2014, 09:23

Re: Проблема с TextSwitcher

Сообщение IriDolG » 28 фев 2014, 06:15

Дополнительный класс ViewFactory ни к чему создавать, как описывается в некоторых мануалах?
Когда-нибудь я научусь!

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Проблема с TextSwitcher

Сообщение klblk » 28 фев 2014, 10:24

Убери для начала либо все implements (интерфейсы), либо используй (textSwitcher.setFactory(this) и функцию makeView перенеси в соответствующую функцию в активити), ну и да ошибка вероятно из-за того что в implements дважды записан один и тот же интерфейс.

Хотя наверное ничего не понятно...
Короче либо так:
[syntax=java]public class MainActivity extends Activity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
textSwitcher.setFactory(new ViewFactory() {

public View makeView() {
TextView myText = new TextView(MainActivity.this);
myText.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
myText.setTextSize(42);
myText.setTextColor(Color.RED);
return myText;
}
});
...
}[/syntax]
либо так:
[syntax=java]public class MainActivity extends Activity implements ViewFactory {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
textSwitcher.setFactory(this);
...
}

@Override
public View makeView() {
TextView myText = new TextView(MainActivity.this);
myText.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
myText.setTextSize(42);
myText.setTextColor(Color.RED);
return myText;
}
} [/syntax]

Аватара пользователя
IriDolG
Сообщения: 46
Зарегистрирован: 10 фев 2014, 09:23

Re: Проблема с TextSwitcher

Сообщение IriDolG » 28 фев 2014, 10:38

Первый вариант точно работает, спасибо!
Когда-нибудь я научусь!

Аватара пользователя
IriDolG
Сообщения: 46
Зарегистрирован: 10 фев 2014, 09:23

Re: Проблема с TextSwitcher

Сообщение IriDolG » 01 мар 2014, 10:51

Как можно реализовать деятельность TextSwitcher, чтобы он менял текст в зависимости от нажатия на несколько кнопок, а не на одну, как в коде выше? По какой-то причине обычное setText с параметром String не работает.
Когда-нибудь я научусь!

Ответить