zoukankan      html  css  js  c++  java
  • android中给按钮注册监听器的一种新颖的方法

    不知道android:onclick这个属性大家熟悉么,我是看apidemos里边的一个例子 popupmenu发现它的

    首先给大家看看代码

    /*
    * Copyright (C) 2010 The Android Open Source Project
    *
    * Licensed under the Apache License, Version 2.0 (the "License");
    * you may not use this file except in compliance with the License.
    * You may obtain a copy of the License at
    *
    *
    http://www.apache.org/licenses/LICENSE-2.0
    *
    * Unless required by applicable law or agreed to in writing, software
    * distributed under the License is distributed on an "AS IS" BASIS,
    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    * See the License for the specific language governing permissions and
    * limitations under the License.
    */

    package com.example.android.apis.view;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.PopupMenu;
    import android.widget.Toast;

    import com.example.android.apis.R;

    /**
    * This demonstrates the use of the PopupMenu class. Clicking the button will
    * inflate and show a popup menu from an XML resource.
    */
    public class PopupMenu1 extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.popup_menu_1);
    }

    public void onPopupButtonClick(View button) {
    PopupMenu popup = new PopupMenu(this, button);
    popup.getMenuInflater().inflate(R.menu.popup, popup.getMenu());

    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
    public boolean onMenuItemClick(MenuItem item) {
    Toast.makeText(PopupMenu1.this,
    "Clicked popup menu item " + item.getTitle(),
    Toast.LENGTH_SHORT).show();
    return true;
    }
    });

    popup.show();
    }
    }


    大家有有木有发现 public void onPopupButtonClick(View button) 这个方法没有被调用过呢??其实这就是我要讲的地方,接下来我给大家看的是这个activity对应的layout文件

    <?xml version="1.0" encoding="utf-8"?>
    <!-- Copyright (C) 2010 Google Inc.

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
    -->
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width
    ="match_parent"
    android:layout_height
    ="match_parent"
    android:orientation
    ="vertical">
    <Button android:layout_width="wrap_content"
    android:layout_height
    ="wrap_content"
    android:layout_gravity
    ="center"
    android:onClick
    ="onPopupButtonClick"
    android:text
    ="@string/popup_menu_button" />
    </LinearLayout>

    有看到 Button这个view的android:onClick属性么??哈哈,秘密就在这里,这个例子的作者并没有采用常规的,setOnclicklistener()的方法来设置监听器。大家明白了么?以后看别人的代码如果发现按钮没有注册监听器,那么奥妙很可能就在它的xml文件里。。。

  • 相关阅读:
    Nginx模块fastcgi_cache的几个注意点 转
    CGI与FastCGI 转
    APUE--UNIX环境编程
    与 在记事本中的内容表现方式 原创
    Linux 内核使用的 GNU C 扩展
    GCC内嵌汇编
    linux下64位汇编的系统调用系列
    查看源码Vim+Cscope
    GCC 编绎选项 转
    Linux系统启动流程 图解
  • 原文地址:https://www.cnblogs.com/Kiro/p/2370320.html
Copyright © 2011-2022 走看看