按钮不工作

Button isn't working

伙计们,我正在创建一个应用程序,在这个布局中,我显示了 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) 函数的原因,当我测试时,我把它们都放一样,但它不起作用。 你们能检查一下发生了什么吗?

可能您的按钮正在工作。您不能将两个字符串与 == 进行比较。您必须使用 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);
    } 
} 

必须从 UI 线程使用 runOnUiThread

显示 Toast

还需要敬酒

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

要比较字符串,您应该使用 equals