您好我在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
请帮助我..
答案 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
。