Android初学者:启用按钮

时间:2012-05-28 16:43:55

标签: java android eclipse android-layout android-intent

我正在创建一个顶部有两个导航栏的应用程序:“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);

    }

谢谢你的帮助

1 个答案:

答案 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时,需要禁用下一个按钮。