2015-07-06 1 views
-1

У меня есть numpad, созданный с помощью кнопок в gridlayout, и мне нужно отредактировать поле EditText. Вот мой код прямо сейчас:Установка кнопки onclick и прослушивателя

MainActivity.java:

Button b1; 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    b1 = (Button) findViewById(R.id.b1); 

    b1.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View view) { 
      //Do something 
     } 
    }); 

main.xml:

 <Button 
     android:id="@+id/b1" 
     android:text="1" 
     android:background="#ff3aaebb" 
     android:textColor="#ffffffff" /> 

Дело в том, мне нужно, чтобы иметь возможность получить текст в EditText и изменить его и Я не знаю, проще ли создать одного слушателя и сделать дело или сделать андроид: onClick = "mymethod". Если вы сможете объяснить различия/льготы, я был бы благодарен.

ответ

0

Назначение метода в XML-макете, как правило, является плохой идеей - трудно отслеживать, а не очень интуитивно, если кто-то другой, кроме того, что вы пытаетесь работать с вашим приложением/частью.

Для множества кнопок, которые разделяют тот же щелчок функционально вы можете назначить деятельность в качестве мыши слушателя

public class MainActivity extends Activity implements View.OnClickListener { 
    @Override 
    protected void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 

     setContentView(R.layout.main); 
     b1 = (Button) findViewById(R.id.b1); 
     b1.setOnClickListener(this); 
     b2 = (Button) findViewById(R.id.b2); 
     b2.setOnClickListener(this); 
     b3 = (Button) findViewById(R.id.b3); 
     b3.setOnClickListener(this); 
     .... 
    } 

    @Override 
    public void onClick(View view) { 
     // your logic for the edit text 
     ... 
     editText.setText("ADD YOUR CHANGED VALUE"); 
    } 
} 

Если вам нужно отделить кнопку логики Foe разные кнопки, то вам нужно сравнить один за другим

@Override 
public void onClick(View view) { 
    if (b1.equals(view)) { 
     // b1 was clicked 
     ... 
     editText.setText(b1.getText()); 
    } 
    else if (b2.equals(view)) { 
     // b2 was clicked 
     ... 
     editText.setText(b2.getText()); 
    } 
    ... 
} 
+0

Я получаю класс или интерфейс, ожидаемый от расширений и таких! –

+0

Ответ обновлен. Для вашей деятельности просто добавьте 'implements View.OnClickListener' –

+0

Спасибо! Но что такое ApplicationActivity? В нем говорится, что он должен быть объявлен в файле с именем ApplicationActivity.java. –

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

  • Нет связанных вопросов^_^