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文件里。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM