Я пытаюсь заставить свою первую кнопку обновить отображаемый номер в моем представлении при нажатии. В этом представлении будет отображаться несколько кнопок и «выходов». Прочитав примеры и 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 с числом, заданным в виде строки, число отображалось, но я не мог понять, как обновить текст с помощью числового поля. Это может быть моей настоящей проблемой.
Я прошел много примеров, на которые обычно ссылаются разработчики. сайт (пользовательский интерфейс, общие задачи, различные образцы), и я до сих пор не вижу здесь связи ...
Опять же, это просто попытка заставить переменные реагировать на кнопки и обновлять представление.
Итак, несколько вопросов для любого, кто может помочь;
1) Есть ли более простой способ сделать это (т.е. отправить числовое значение в View)?
2) Почему мой TextSwitcher не отображает число?
3) Должен ли я использовать TextSwitcher здесь?
4) На какие примеры вы можете мне указать?
ОБНОВЛЕНИЕ !!!: теперь работают кнопки с обратной связью. Вот мое исправление, основанное на отзывах, исследованиях и удаче;
открытый класс 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 была немного неловкой ... все еще учусь.
Любые другие заключительные комментарии приветствуются!
ОБНОВЛЕНИЕ ОБНОВЛЕНИЕ !!
Я также нашел это;
http://developer.android.com/resources/articles/ui-1.6.html