2011-07-06 86 views
9

我使用了這段代碼,但是當我在運行時點擊活動時,它從來沒有在OnTouch()方法中打過。有人能指導我做錯了什麼嗎?我是否需要設置此活動的內容視圖?其實我想要在執行過程中用戶觸摸的活動的座標。OnTouchListener on Activity從不調用

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"; 
     } 
} 

回答

2

您應該將onTouchListener轉換爲相關的GUI組件。

例如:

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

在的onCreate,你需要設置的內容視圖(僅僅在取消第二行或許應該工作),然後你需要設置你的OnTouchListener(你的活動)作爲onTouchListener爲在您的應用程序中的視圖。

假設你在佈局中有一個名爲「MainView」的視圖;它會是這個樣子:

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

這篇文章有一個很好的例子: http://www.zdnet.com/blog/burnette/how-to-use-multi-touch-in-android-2-part-2-building-the-touch-example/1763

2

您必須添加一個使用​​否則誰給調用您的onTouch方法聽衆。任何聽衆都可以在任何視圖上工作。所以你要監聽器添加到視圖如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:

你需要這樣做:

  • 在你的XML佈局文件,你需要一個ID爲根視圖:android:id="@+id/myView"
  • 在十有二onCreate()方法,這樣寫:

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

假設根視圖是一個LinearView

+0

沒有這樣的方法。 – MByD

+0

對不起。 'setOnTouchListener(this)' – iTurki

+0

有沒有這樣的活動方法... – MByD

相關問題