Button.setEnabled在需要时不启用按钮

时间:2016-04-18 14:08:21

标签: java android

所以我想要两个按钮,一个用于在TextView上添加1,另一个用于减少。

textview上的结果必须小于0。

所以我想如果文本为0则将其设置为禁用,这样它就不能进入负值。但是这并没有像我想象的那样工作,当我按下加号按钮并添加1然后按减号按钮减去1(文本视图上的结果现在为0),然后再添加一个带加号按钮然后减去减去按钮不起作用,它未启用。

这是我的代码

int rezultat;
                rezultat = Integer.parseInt(brojIntervala.getText().toString());

                if (rezultat == 0){
                    homeScreenMinus.setEnabled(false);
                    brojIntervala.setText("0");
                } else if (rezultat > 0){
                    homeScreenMinus.setEnabled(true);
                }
            }
        });



package hiitbydario.com.daroioradecic.hiittraining;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;

public class HomeScreen extends AppCompatActivity {
    Button homeScreenPlus, homeScreenMinus;
    TextView brojIntervala;
    ImageButton homeScreenStart;
    int counter = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home_screen);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        homeScreenPlus = (Button) findViewById(R.id.homeScreenPlus);
        homeScreenMinus = (Button) findViewById(R.id.homeScreenMinus);
        homeScreenStart = (ImageButton) findViewById(R.id.homeScreenStart);

        brojIntervala = (TextView) findViewById(R.id.brojIntervala);

        homeScreenPlus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dodajInterval();
            }
        });

        homeScreenMinus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                oduzmiInterval();
                int rezultat;
                rezultat = Integer.parseInt(brojIntervala.getText().toString());

                if (rezultat == 0){
                    homeScreenMinus.setClickable(false);
                    brojIntervala.setText("0");
                } else if (rezultat > 0){
                    homeScreenMinus.setClickable(true);
                }
            }
        });


    }

    private void oduzmiInterval() {
        counter--;
        brojIntervala.setText(Integer.toString(counter));
    }

    private void dodajInterval() {
        counter++;
        brojIntervala.setText(Integer.toString(counter));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_home_screen, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

2 个答案:

答案 0 :(得分:1)

我建议继续使用setEnabled()而不是setClickable(),以便用户也可以看到该按钮被停用。

问题是你只是在点击时更新减号按钮的状态。但是,如果单击加号按钮,则需要更新它,以便在从0转换为正值时重新启用它。

homeScreenPlus.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        dodajInterval();
        homeScreenMinus.setEnabled(counter > 0);
    }
});

答案 1 :(得分:0)

将rezultat移动到成员变量。

homeScreenMinus.setEnabled(mRezultat > 0);
brojIntervala.setText(Integer.toString(mRezultat));

[完整代码审查后编辑]不需要mRezultat,直接使用计数器。