这就是我在操作栏中添加切换小部件的方法。我已经玩过了。但我不知道如何回应点击事件。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.map, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
System.out.println("actionbar clicked");
// Handle item selection
if (item.getItemId()==R.id.myswitch) {
Switch actionView = (Switch)item.getActionView();
actionView.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, final boolean isChecked) {
status = isChecked;
System.out.println(status);
}
});
return true;
}
return super.onOptionsItemSelected(item);
}
这是我的交换机布局和地图资源文件
switch_status.xml
<?xml version="1.0" encoding="utf-8"?>
<Switch
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/switch1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:showText="true"
android:textOff="Free"
android:textOn="Booked" />
map.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" >
<item
android:id="@+id/myswitch"
android:showAsAction="always"
android:title=""
android:actionLayout="@layout/switch_status" />
</menu>
点击开关时,它正在改变它的状态,但我甚至看不到控制台上的一个消息,例如&#34;操作栏点击了#34; &安培; &#34;真&#34; /&#34; false&#34;。而且也没有错误。
我不确定天气这是处理操作栏点击的正确方法。如果任何人可以帮助我使用此代码,那将非常好。 三江源
答案 0 :(得分:0)
使用工具栏执行此操作的最佳方式 在工具栏中,您可以添加任何视图并对其进行控制。
答案 1 :(得分:0)
您不需要设置OnCheckedChangeListener,onOptionsItemSelected是“onClickListener”
使用开关:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
System.out.println("actionbar clicked");
// Handle item selection
switch (item.getItemId()) {
case R.id.myswitch:
System.out.println(((Switch)item.getActionView()).isChecked());
break;
}
return super.onOptionsItemSelected(item);
}
答案 2 :(得分:0)
我遇到了同样的问题,并通过以下技术实现了
<Switch
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/switch1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:showText="true"
android:textOff="Free"
android:textOn="Booked"
android:onClick="onSwitch"
/>
public void onSwitch(View view) {
Switch androidSwitch = findViewById(R.id.switch1);
if(androidSwitch.isChecked()){
Log.i("Test","enabled");
}else{
Log.i("Test","disabled");
}
}