2011-07-06 37 views
9

Tôi đã sử dụng mã này, nhưng khi tôi nhấp vào hoạt động lúc chạy, nó không bao giờ được truy cập trong phương thức OnTouch(). Ai đó có thể hướng dẫn tôi những gì tôi đang làm sai? Tôi có nên cần thiết lập xem nội dung của hoạt động này không? Thực ra tôi muốn tọa độ hoạt động mà người dùng chạm vào trong khi thực thi.OnTouchListener on Activity không bao giờ gọi

public class TouchTestAppActivity extends Activity implements OnTouchListener 
{ 

    @Override 
public void onCreate(Bundle savedInstanceState) 
     { 
     super.onCreate(savedInstanceState); 
     //setContentView(R.layout.touch); 
     } 

    @Override 
public boolean onTouch(View arg0, MotionEvent arg1) 
     { 
     // TODO Auto-generated method stub 
     String test = "hello"; 
     } 
} 

Trả lời

2

Bạn nên onTouchListener thành các thành phần GUI có liên quan.

Ví dụ:

public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.touch); 
     TextView someView = (TextView)findViewById(R.id.some_view_from_layout_xml); 
     someView.setOnTouchListener(this); // "this" is the activity which is also OnTouchListener 
    } 
1

Trong onCreate, bạn cần phải thiết lập các quan điểm nội dung (chỉ uncommenting dòng thứ hai có lẽ nên làm việc) và sau đó bạn cần phải thiết lập OnTouchListener của bạn (hoạt động của bạn) như onTouchListener cho một lượt xem trong ứng dụng của bạn.

Giả sử bạn có chế độ xem trong bố cục được gọi là "MainView"; nó sẽ giống như thế này:

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     View view = findViewById(R.id.MainView); 
     view.setOnTouchListener(this); 
    } 

Bài viết này có một ví dụ điển hình: http://www.zdnet.com/blog/burnette/how-to-use-multi-touch-in-android-2-part-2-building-the-touch-example/1763

2

Bạn cần phải thêm một người nghe bằng setOnTouchListener() khác, những người sẽ cung cấp cho cuộc gọi đến phương pháp onTouch của bạn. bất kỳ trình nghe nào hoạt động trên mọi chế độ xem. vì vậy bạn phải thêm người nghe đến xem ví dụ button.setOnTouchListener(this);

LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View vi = inflater.inflate(R.layout.yourxml, null); 
setCOntentView(vi); 
vi.setOnTouchListener(this); 
12

UPDATE:

Bạn cần phải làm điều này:

  • Trong file layout XML của bạn, bạn cần một ID cho gốc xem: android:id="@+id/myView"
  • Trong phương thức youer onCreate(), viết:

    LinearView v= (LinearView) findViewById(R.id.myView); 
    v.setOnTouchListener(this); 
    

Giả sử rằng quan điểm gốc của bạn là một LinearView

+0

Không có phương pháp như vậy. – MByD

+0

xin lỗi. 'setOnTouchListener (this)' – iTurki

+0

Cũng không có phương pháp nào cho hoạt động ... – MByD

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