在android中使用appcompat在actbionbar中添加开关?

时间:2014-12-03 16:21:11

标签: android android-actionbar-compat

您好我在ActionBar中使用Switch但想要引用使用setOnCheckedChangeListener方法,但它在方法中给出了错误

myswitch = (Switch) menu.findItem(R.id.myswitch).getActionView().findViewById(R.id.switchForActionBar);

这是我的代码......

我的活动

public class MainActivity extends ActionBarActivity implements OnCheckedChangeListener{

我的方法菜单

public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_actions, menu);
    this.menu = menu;
    MenuItem refr = menu.findItem(R.id.action_refresh);
    refr.setVisible(true);
    mySwitch = (Switch)menu.findItem(R.id.myswitch).getActionView().findViewById(R.id.switchForActionBar);
    if ( mySwitch == null ){
        Toast.makeText(this, "Null", Toast.LENGTH_SHORT).show();
    }
    else{
        mySwitch.setOnCheckedChangeListener(this);
        mySwitch.setChecked(true);}
    return super.onCreateOptionsMenu(menu);
}

但它给了我一个错误:

java.lang.NoShuchMethodError: android.view.MenuItem.getActionView
请帮助我..

1 个答案:

答案 0 :(得分:0)

使用MenuItemCompat.getActionView()

    getMenuInflater().inflate(R.menu.search, menu);
    final MenuItem menuItem = menu.findItem(R.id.menu_item);
    final Switch switch = (Switch) MenuItemCompat.getActionView(menuItem);

考虑R.id.menu_item是一个开关,或者您正在使用自定义布局/视图。

IMO您的错误只与API相关,这就是为什么您应该始终使用MenuItemCompat.getActionView()来兼容,无论您的设备运行的API级别如何。

修改

对不起,我误导了。尝试在XML和代码中使用SwitchCompat