打开选项菜单时按钮状态更改

时间:2015-03-17 09:56:31

标签: android button android-activity android-ui

为什么按下按钮会在打开选项菜单时丢失它的状态?

我做了一个示例活动,以明确说明:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);             
        Button btn = (Button) findViewById(R.id.button1);
        btn.setPressed(true); // set the state
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings)
            return true;
        return super.onOptionsItemSelected(item);
    }
}

我们将视图中的按钮设置为按下状态。 当您运行项目然后打开选项菜单时,按下的状态消失。看起来按钮已经删除了它的状态。

在不重绘整个活动的情况下保持按钮状态的解决方案/解决方法是什么?也许Button的实现不具备此行为并且需要使用切换按钮?

1 个答案:

答案 0 :(得分:0)

public class MainActivity extends Activity {

    Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);             
    btn; = (Button) findViewById(R.id.button1);
        btn.setPressed(true); // set the state
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
    //here you can set your state....
    btn. //set the state...
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings)
            return true;
        return super.onOptionsItemSelected(item);
    }
}