在操作栏

时间:2015-11-12 13:56:34

标签: java android

这就是我在操作栏中添加切换小部件的方法。我已经玩过了。但我不知道如何回应点击事件。

@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;。而且也没有错误。

我不确定天气这是处理操作栏点击的正确方法。如果任何人可以帮助我使用此代码,那将非常好。 三江源

3 个答案:

答案 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)

我遇到了同样的问题,并通过以下技术实现了

  • 为如下所示的开关添加了onClick方法
  • <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"
    />
    

  • 在Activity中实现onSwitch方法如下:
  • public void onSwitch(View view) {
        Switch androidSwitch = findViewById(R.id.switch1);
        if(androidSwitch.isChecked()){
            Log.i("Test","enabled");
        }else{
            Log.i("Test","disabled");
        }
    }