2015-07-30 2 views
0

Итак, ребята, я создаю приложение, и в этом макете я показываю 2 EditText, когда пользователь нажимает на любой из них, он показывает всплывающее меню и когда они нажимают на элемент всплывающего окна меню, он установит текст edittext в тот же текст элемента, который они нажали. Эта часть работает. Но тогда у меня будет кнопка, которая будет делать определенные вещи, но я просто тестировал эту кнопку, чтобы увидеть, работает ли она, но ничего не происходит, когда я нажимаю кнопку, я не знаю, почему. Вот код:Кнопка не работает

public class horariosMenu extends Activity implements PopupMenu.OnMenuItemClickListener { 

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

    Button buttonProcurar = (Button) findViewById(R.id.buttonProcurar); 
    final EditText deTextPartida = (EditText) findViewById(R.id.deText); 
    final EditText paraTextDestino = (EditText) findViewById(R.id.paraText); 
    buttonProcurar.setOnClickListener(
      new Button.OnClickListener(){ 
       @Override 
       public void onClick(View v) { 
        verifica(deTextPartida.getText().toString(), paraTextDestino.getText().toString()); 
       } 
      } 
    ); 
} 


public void showPopUp(View view){ 
    PopupMenu popupMenu = new PopupMenu(this, view); 
    popupMenu.setOnMenuItemClickListener(horariosMenu.this); 
    MenuInflater menuInflater = popupMenu.getMenuInflater(); 
    menuInflater.inflate(R.menu.popup_menu_locais, popupMenu.getMenu()); 
    popupMenu.show(); 
} 

public void showPopUpMenu_Para(View view){ 
    PopupMenu popupMenuPara = new PopupMenu(this, view); 
    popupMenuPara.setOnMenuItemClickListener(horariosMenu.this); 
    MenuInflater menuinflaterPara = popupMenuPara.getMenuInflater(); 
    menuinflaterPara.inflate(R.menu.popup_menu_locais_para, popupMenuPara.getMenu()); 
    popupMenuPara.show(); 
} 

@Override 
public boolean onMenuItemClick(MenuItem item) { 
    EditText deText = (EditText) findViewById(R.id.deText); 
    EditText paraText = (EditText) findViewById(R.id.paraText); 
    switch(item.getItemId()){ 
     case R.id.id_Coimbra: 
      deText.setText("Coimbra", null); 
      return true; 
     case R.id.id_SJoao: 
      deText.setText("S. Joao", null); 
      return true; 
     case R.id.id_SSilvestre: 
      deText.setText("S. Silvestre", null); 
      return true; 
     case R.id.id_SMartinho: 
      deText.setText("S. Martinho", null); 
      return true; 
     case R.id.id_Tentugal: 
      deText.setText("Tentugal", null); 
      return true; 
     case R.id.id_Carapinheira: 
      deText.setText("Carapinheira", null); 
      return true; 
     case R.id.id_Montemor: 
      deText.setText("Montemor", null); 
      return true; 
     case R.id.id_Maiorca: 
      deText.setText("Maiorca", null); 
      return true; 
     case R.id.id_Figueira: 
      deText.setText("Figueira da Foz", null); 
      return true; 
     //EDIT TEXT "PARA": 
     case R.id.id_Coimbra_Para: 
      paraText.setText("Coimbra", null); 
      return true; 
     case R.id.id_SJoao_Para: 
      paraText.setText("S. Joao", null); 
      return true; 
     case R.id.id_SSilvestre_Para: 
      paraText.setText("S. Silvestre", null); 
      return true; 
     case R.id.id_SMartinho_Para: 
      paraText.setText("S. Martinho", null); 
      return true; 
     case R.id.id_Tentugal_Para: 
      paraText.setText("Tentugal", null); 
      return true; 
     case R.id.id_Carapinheira_Para: 
      paraText.setText("Carapinheira", null); 
      return true; 
     case R.id.id_Montemor_Para: 
      paraText.setText("Montemor", null); 
      return true; 
     case R.id.id_Maiorca_Para: 
      paraText.setText("Maiorca", null); 
      return true; 
     case R.id.id_Figueira_Para: 
      paraText.setText("Figueira da Foz", null); 
      return true; 
    } 
    return false; 
} 

public void verifica(String a, String b) { 
    if (a == b) { 
     Toast.makeText(getBaseContext(), "Partida e destino nao podem ser iguais, escolha de novo!", Toast.LENGTH_LONG); 
    } 
} 

}

Кнопки предполагают только работать, по крайней мере сейчас, когда текст обоих EditText одинаковы. Вот почему я вызываю функцию verifica (String, String), и когда я тестирую, я помещаю то же самое, и это не работает. Можете ли вы, ребята, проверить, что происходит?

+0

Просто добавьте Тост в onClick() и посмотреть, отображается ли тост .. просто для отладки .. – Lal

+0

@Lal «только для отладки»? Я имею в виду способ отладки - подключить отладчик и нажать кнопку. Не нужно перекомпилировать, переустановить и перезапустить ... – WarrenFaith

ответ

0

Тост должен быть показан с использованием интерфейса резьбы runOnUiThread

Кроме того, необходимо, чтобы показать тост

Toast.makeText(...).show(); 

И для сравнения строки, вы должны использовать equals

+0

Bah, вы справа, кнопка работала, я просто пропустил .show(). Я задерживаю ahah thx man –

0

Возможно, ваша кнопка работает. Вы не можете сравнить две строки с ==. Вы должны использовать функцию compareTo для сравнения строки.

public void verifica(String a, String b) { 
    if (a.compareTo(b)) { 
     Toast.makeText(getBaseContext(), "Partida e destino nao podem ser iguais, escolha de novo!", Toast.LENGTH_LONG); 
    } 
} 
+0

, когда я делаю это, он дает мне ошибку, говорит: «Несовместимые типы, обязательные: boolean, found: int» У меня нет значений int здесь Oo –