2013-05-07 41 views
5

Tôi có giao diện mẫu trông giống như;Chế độ xem thổi phồng không bắt sự kiện Click

template.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/contentLayout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@color/view_background" 
android:gravity="center_vertical" 
tools:context=".MainActivity" > 

<Button 
    android:id="@+id/btnMultiple" 
    android:layout_width="0dp" 
    android:layout_height="150dp" 
    android:layout_marginLeft="5dp" 
    android:layout_marginRight="5dp" 
    android:layout_weight="1" 
    android:background="@drawable/button_backgroundblue" 
    android:onClick="btnMultiple_clicked" 
    android:tag="4" 
    android:text="@string/mc_abcd" 
    android:textColor="@drawable/button_textcolor" 
    android:textSize="@dimen/h2" /> 

tôi là tạo ra quan điểm này lập trình và sau đó tôi thêm Xem này vào ViewFlipper như tương tự;

activity_main.java

public void btnCreateView_clicked(View view) { 
    ViewFlipper viewFlipper = (ViewFlipper)findViewById(R.id.flipper); 

    View myView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.template, viewFlipper, false); 
    viewFlipper.addView(myView); 
    viewFlipper.showNext(); // Showing lastly created myView successfully. } 

Ngoài ra hoạt động của tôi có chức năng công cộng như tương tự;

activity_main.java

public void btnMultiple_clicked(View view) { 
     //Save the world ! 
} 

Khi tôi bấm nút btnCreateView từ cái nhìn đầu tiên nó tạo thành công mẫu (MyView) và sau đó thêm nó vào ViewFlipper. Khi tôi nhấp vào btnMultiple tôi đang nhận được lỗi và ứng dụng của tôi bị treo; "Không thể tìm thấy phương thức btnMultiple_clicked (Xem) trong lớp hoạt động android.app.Application cho trình xử lý onClick trên lớp xem android.widget.Button có id 'btnMultiple'" Tôi chắc chắn có phương thức btnMultiple_clicked hiện có (Xem).

PS! Nếu tôi thêm người nghe để btnMultiple lập trình nó sẽ làm việc nhưng tôi tự hỏi tại sao "android: onClick =" btnMultiple_clicked "" không hoạt động?

Trả lời

5

Android tìm phương pháp được xác định trong thuộc tính onClick trong Activity. Sự cố trong mã của bạn là bạn đã sử dụng để khởi tạo LayoutInflaterContext của và không phải là Context của số Activity do đó phương pháp sẽ không được tìm thấy ở đó (Context được chuyển đến View). Sử dụng:

View myView = LayoutInflater.from(this).inflate(R.layout.template, viewFlipper, false); 

hoặc bất kỳ tham chiếu nào khác trỏ đến Activity nơi các nút đó sẽ được sử dụng. Đây là một ví dụ điển hình tại sao bạn nên sử dụng trong hầu hết các trường hợp Context của số Activity.

+0

Tôi hiểu rồi, cảm ơn sự giúp đỡ của bạn. Nó hoạt động như một say mê. –