2010-09-17 40 views
7

Tôi có hai phương pháp onclick trong dự án androidAndroid onClick phương pháp

clr=(Button)findViewById(R.id.Button01); 
    clr.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 

      tv1.setText("CLR"); 

      et1.setText(""); 
      refrigerant = ""; 
      pres = ""; 
      temperature = ""; 

      superheat_oda = 0; 
      sub_cool = 0; 
} 
    }); 

Và tôi có onther phương pháp onClick trong đó tôi phải gọi đó là phương pháp trực tiếp

prs=(Button)findViewById(R.id.Button02); 
    prs.setOnClickListener(new OnClickListener() { 


        -----  I have to call that method--- 

               } 
    }); 

Có giải pháp nào cho việc này?

+3

Tôi đề nghị bạn làm theo gợi ý 'benvd', nhưng vẫn vì lợi ích của nó, sử dụng' clr.performClick() 'trong Trình nghe. – st0le

Trả lời

14

Bạn muốn gọi số onClick đầu tiên từ giây? Chỉ cần trích xuất nội dung của onClick đầu tiên của bạn bằng một phương thức riêng và gọi phương thức đó từ mỗi onClick.

Chỉnh sửa: Theo nhận xét của st0le, bạn có thể thực hiện những gì bạn muốn bằng cách gọi clr.performClick(). (Không biết điều đó.) Tuy nhiên, giải nén nó thành một phương pháp riêng biệt có vẻ sạch hơn.

1

tôi sẽ khuyên bạn nên sử dụng cùng một OnClickListener cho cả hai nút nếu cả hai nút thực sự cần phải làm điều tương tự:

OnClickListener l=new OnClickListener() { 

    public void onClick(View v) { 

     tv1.setText("CLR"); 

     et1.setText(""); 
     refrigerant = ""; 
     pres = ""; 
     temperature = ""; 

     superheat_oda = 0; 
     sub_cool = 0; 
    } 
}; 
clr=(Button)findViewById(R.id.Button01); 
clr.setOnClickListener(l); 
prs=(Button)findViewById(R.id.Button02); 
prs.setOnClickListener(l); 

hoặc nếu nó không hoàn toàn giống bạn có thể truy cập vào các phương pháp nghe bởi l.onClick (vô giá trị); bằng tay ..

7

Bạn nên chuyển sang sử dụng cách đơn giản nhất mà tôi luôn luôn làm như sau:

@Override 
public void onCreate(Bundle savedInstanceState) { 
     button1.setOnClickListener(onClickListener); 
     button2.setOnClickListener(onClickListener); 

} 

private OnClickListener onClickListener = new OnClickListener() { 

    @Override 
    public void onClick(final View v) { 
      switch(v.getId()){ 
       case R.id.button1: 
         //DO something 
       break; 
       case R.id.button2: 
         //DO something 
       break; 
       } 

    } 
}; 
+0

một đề xuất nút sẽ là để phá vỡ mọi trường hợp. điều đó sẽ làm cho nó hiệu quả hơn. –

5

bạn có thể làm một cái gì đó như thế này trong các tập tin XML

<Button 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:onClick="some_function" /> 

và đặt chức năng này vào tệp Java

public void some_function(View view) { 
// stuff... 
} 

và đặt some_function trong cả hai "onClick" của

+0

Tham số chức năng '(Xem chế độ xem)' là công cụ xác thực. Cảm ơn! –

Các vấn đề liên quan