我正在创建一个顶部有两个导航栏的应用程序:“previous”和“next”。我试图使它分别在第1页和最后一页上禁用按钮。我不确定为什么这段代码不起作用。上一个按钮变为禁用但“下一个”按钮未启用(false)。
这是我的代码:
previous =(Button)findViewById(R.id.button_previous);
next = (Button)findViewById(R.id.button_next);
previous.setOnClickListener(this);
next.setOnClickListener(this);
spinner = (Spinner)findViewById(R.id.spinner);
heading = (TextView)findViewById(R.id.textNavigationHeading);
text = (TextView)findViewById(R.id.textNavigationText);
Bundle ext = getIntent().getExtras();
this.list = ext.getInt("list");
this.page = ext.getInt("page");
if(list == 0){
itemsHeading = campaignHeadings;
MAX_PAGES = campaignHeadings.length;
}
if(list == 1){
itemsHeading = specopsHeadings;
MAX_PAGES = specopsHeadings.length;
}
setContent();
}
private void setContent() {
heading.setText(itemsHeading[page]);
text.setText("Blah blah blah");
checkButtons(page);
}
private void checkButtons(int page) {
if(page == 0)
previous.setEnabled(false);
if(page != MAX_PAGES)
next.setEnabled(true);
}
private void resetButtons(int page){
previous.setEnabled(true);
next.setEnabled(false);
checkButtons(page);
}
public void onClick(View v) {
switch(v.getId()){
case R.id.button_next:
page += 1;
break;
case R.id.button_previous:
page -= 1;
break;
}
setContent();
resetButtons(page);
}
谢谢你的帮助
答案 0 :(得分:0)
启用和禁用按钮的代码如下:
private void checkButtons(int page) {
if(page == 0)
previous.setEnabled(false);
if(page != MAX_PAGES)
next.setEnabled(true);
}
private void resetButtons(int page) {
previous.setEnabled(true);
next.setEnabled(false);
checkButtons(page);
}
您有两种不同的方法,有时会调用一种方法,有时则调用另一种方法。使它成为一个单一的方法,如下所示:
private void enableOrDisableButtons(int page) {
previous.setEnabled(page != 0);
next.setEnabled(page != (MAX_PAGES - 1));
}
另请注意,MAX_PAGES
是列表的长度,索引从0
升级到length - 1
。因此,当页面为MAX_PAGES - 1
时,需要禁用下一个按钮。