2010-04-06 2 views
1

Я пытаюсь получить свою первую кнопку, чтобы обновить номер дисплея в моем представлении при нажатии. В этом представлении будет отображаться несколько кнопок и «выходы». После прочтения примеров и Q здесь я наконец положил что-то вместе, что работает, но моя первая кнопка все еще не работает;Нужна помощь, чтобы получить кнопки для работы

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.ship_layout); 
     mSwitcher = (TextSwitcher) findViewById(R.id.eng_val); 
     } 

    private TextSwitcher mSwitcher; 

     // Will be connected with the buttons via XML 
     void onClick(View v){ 

      switch (v.getId()) { 
      case R.id.engplus: 
       engcounter++; 
       updateCounter(); 
       break; 
      case R.id.engneg: 
       engcounter--; 
       updateCounter(); 
       break; 
      } 
     } 
    private void updateCounter() { 
     mSwitcher.setText(String.valueOf(engcounter)); 
    } 

.xml для этой кнопки есть;

 <TextSwitcher 
    android:id="@+id/eng_val" 
    android:visibility="visible" 
    android:paddingTop="9px" 
    android:paddingLeft="50px" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/build" 
    android:layout_toRightOf="@+id/engeq" 
    android:textColor="#DD00ff00" 
    android:textSize="24sp"/>  

Это в относительной компоновке, которая выглядит иначе. Когда я установил представление TextView с номером, установленным в виде строки, номер отображался, но я не мог понять, как обновить текст с помощью числового поля. Это может быть моей реальной проблемой.

Я рассмотрел множество примеров, обычно ссылающихся на разработчика. (UI, Common Tasks, различные образцы), и я до сих пор не вижу связи здесь ...

Опять же, это просто попытка заставить переменные отвечать на кнопки и обновлять их.

Итак, несколько Q для тех, кто может помочь;

1) Есть ли более простой способ сделать это (то есть отправить числовое значение для просмотра)? 2) Почему мой TextSwitcher не отображает номер? 3) Должен ли я использовать TextSwitcher здесь? 4) Любые примеры этого вы можете указать мне?

UPDATE !!!: Кнопки с обратной связью теперь работают. Вот мое решение, основанное на отзывах, исследованиях и удаче;

общественный класс MyView расширяет Myapp реализует ViewSwitcher.ViewFactory, View.OnClickListener {

public int engcounter = 1; 
private TextSwitcher mSwitcher; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.my_layout); 
     mSwitcher = (TextSwitcher) findViewById(R.id.eng_val); 
     mSwitcher.setFactory(this); 


    Button engp = (Button) findViewById(R.id.engplus); 
    engp.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view){ 
     engcounter++; 
     updateCounter(); 
     } 
    }); 

    Button engn = (Button) findViewById(R.id.engneg); 
    engn.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view){ 
     engcounter--; 
     updateCounter();  
     } 
    }); 

    } 
    private void updateCounter() { 
     mSwitcher.setText(String.valueOf(engcounter)); 
    } 
    public View makeView() { 
     TextView t = new TextView(this); 
     t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL); 
     t.setTextSize(36); 
     return t; 
    } 
    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

} 

Часть этого появляется ненужный в данный момент (то есть. Гравитация на makeView), но это работает! И должен работать на 10-20 кнопок, с которыми я хочу делать разные вещи.

Ключ был прав слушателей, и вся настройка для TextSwitcher была неловкой ... до сих пор учиться.

Любые другие заключительные комментарии приветствуются!

UPDATE UPDATE !! Я тоже нашел это;

http://developer.android.com/resources/articles/ui-1.6.html

ответ

2

Ваш TextSwitcher не отображает номера, потому что вы должны установить OnClickListener ваши кнопки в вашем методе OnCreate(). В настоящее время ваш метод onClick() никогда не вызывается.

Добавьте это в OnCreate:

Button plus = (Button) findViewById(R.id.engplus); 
plus.setOnClickListener(this); 
Button neg = (Button) findViewById(R.id.engneg); 
neg.setOnClickListener(this); 

И убедитесь, что ваш класс реализует View.OnClickListener

Насколько их быть более простой способ, чтобы показать числовое значение в TextView, как вы делаете это Это хорошо. Вы должны передать String в setText(), и способ преобразования числа в строку в порядке.

+0

Хм ... спасибо. Я понимаю что ты имеешь ввиду. Я добавил их к моему мнению, и теперь он сработает (до того, как он ничего не сделал, но я мог нажимать на кнопки) ... будет продолжать смотреть на него ... –

+0

Чтобы уточнить, он падает только тогда, когда я нажимаю на любой из этих 2 кнопок. Другие кнопки и в противном случае - в порядке. –

+0

У вас должна быть stacktrace на выходе LogCat, которая позволяет узнать, почему он разбился. Поместите это здесь, если вы не можете это понять. –

-2

я должен был бы видеть больше кода, чтобы увидеть то, что происходит не так, но вот апи демо из android developer site. Я предполагаю, что вам нужно реализовать ViewSwitcher ViewFactory и View OnClickListener. Я вижу, что у вас есть клик, но модификатор не соответствует, и я не вижу метод make view в вашем коде.


public class TextSwitcher1 extends Activity implements ViewSwitcher.ViewFactory, 
     View.OnClickListener { 

    private TextSwitcher mSwitcher; 

    private int mCounter = 0; 

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

     setContentView(R.layout.text_switcher_1); 

     mSwitcher = (TextSwitcher) findViewById(R.id.switcher); 
     mSwitcher.setFactory(this); 

     Animation in = AnimationUtils.loadAnimation(this, 
       android.R.anim.fade_in); 
     Animation out = AnimationUtils.loadAnimation(this, 
       android.R.anim.fade_out); 
     mSwitcher.setInAnimation(in); 
     mSwitcher.setOutAnimation(out); 

     Button nextButton = (Button) findViewById(R.id.next); 
     nextButton.setOnClickListener(this); 

     updateCounter(); 
    } 

    public void onClick(View v) { 
     mCounter++; 
     updateCounter(); 
    } 

    private void updateCounter() { 
     mSwitcher.setText(String.valueOf(mCounter)); 
    } 

    public View makeView() { 
     TextView t = new TextView(this); 
     t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL); 
     t.setTextSize(36); 
     return t; 
    } 
}
+0

Да, это отчасти то, что я хочу, без анимации, и с переключателем для обработки моих 10-20 кнопок на просмотр. Onclicklistner появляется, как пойти, фабрика, похоже, не помогает .... но она все еще не работает ... (см. Мой ответ выше) –

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