操作栏元素的 onclickListener

onclickListener for actionbar elements

我的操作栏有两种不同的布局,每一种都由另一种触发。对于第一个,我可以在 oncreate 方法中轻松声明 onclicklister。对于第二个,我必须在第一个 onclicklistener 中关联监听器,因为在创建它时是正确的时间。该代码仅适用于一次迭代,但是当我单击第二个布局中的按钮时,第一个布局的触发器不起作用,因为它与 oncreate 方法相关联。

主要活动:

    public class MainActivity extends ActionBarActivity {

        ActionBar action = getSupportActionBar();

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            action = getSupportActionBar();

            ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#33000000"));
            action.setBackgroundDrawable(colorDrawable);

            action.setDisplayShowTitleEnabled(false);
            action.setDisplayShowCustomEnabled(true);
            action.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
            action.setCustomView(R.layout.search_button);


                      ImageButton searchButton = (ImageButton)findViewById(R.id.search_button);
searchButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        action.setCustomView(R.layout.search_form);
        ImageButton backButton = (ImageButton)findViewById(R.id.back_button);
        backButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                action.setCustomView(R.layout.search_button);
            }
        });
    }
});

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

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


search_form:   
<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="right|center_vertical">

        <ImageButton
            android:id="@+id/back_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/_back"
            android:clickable="true"
            android:background="#00000000"
            android:paddingRight="8dp"

            android:layout_gravity="center_vertical"/>

        <EditText
            android:id="@+id/search_form"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:textColor="#ffffff"
            android:hint="search"
            android:textColorHint="#ffffff"
            android:textCursorDrawable="@drawable/pipe"
            android:background="#00000000"
            />

    </LinearLayout>

search_button:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_gravity="right|center_vertical">

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="le ultime novità"
            android:layout_gravity="center_vertical"
            android:textSize="22sp"
            android:paddingRight="12dp"/>

        <ImageButton
            android:id="@+id/search_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/_search"
            android:clickable="true"
            android:background="#00000000"
            android:paddingRight="8dp"
            android:layout_gravity="center_vertical"/>

    </LinearLayout>

您似乎正在使用自定义视图来模拟您在使用 SearchView 小部件并使用 onCreateOptionsMenu 设置操作栏中的项目时已经获得的功能。