所以我想要两个按钮,一个用于在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);
}
}
答案 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,直接使用计数器。