2013-05-12 62 views
1

當我向視圖添加偵聽器「OnTouchListener」時,它不會註冊。這裏是我的代碼:視圖中的OnTouchListener - Android

GUI gui; 
boolean guis = true; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    gui = new GUI(getBaseContext()); 
    gui.setOnTouchListener(this); 
    setContentView(gui); 
} 

當我做setOnTouchListener(),我把「這個」作爲一個參數..假如那是什麼東西?

我讓GUI類實現OnTouchListener並增加了一個OnTouch方法...... 但我把

Log.w("AA","Hello") 

在OnTouch方法,但它不記錄,在所有。

+0

使用'this'假設Activity是實現'OnTouchListener'的Activity,並且將觸發事件。 – Luksprog 2013-05-12 10:25:17

+0

我希望視圖有一個OnTouchListener – KeirDavis 2013-05-12 11:03:05

回答

4

你可以做以下

public class MainActivity extends Activity implements OnTouchListener{ 
    GUI gui; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     gui = new GUI(MainActivity.this); 
      setContentView(gui); 
    gui.setOnTouchListener(this); 
} 


@Override 
public boolean onTouch(View v, MotionEvent event) { 
    // TODO Auto-generated method stub 
    Log.w("AA","Hello") 
    return true; 
} 

或者你可以重寫onTouch在GUI視圖

public class GUI extends View{ 

Context mcontext; 
public MyView(Context context) { 
    super(context); 
      mcontext=context; 
} 
@Override 
public boolean onTouchEvent(MotionEvent event) { 
Toast.makeText(mcontext, "View clicked", 1000).show(); 
switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
     // do something 
     break; 
    case MotionEvent.ACTION_MOVE: 
     // do something 
     break; 
    case MotionEvent.ACTION_UP: 
     //do something 
     break; 
} 
return true; 
} 

由於Luksprog評論這是指對當前上下文。

如果你這樣做gui.setOnTouchListener(this);

您的活動類必須實現OnTouchListener並覆蓋onTouch方法。

您也可以在自定義視圖中覆蓋onTouch。

如果您只是重寫onTouch,則無需在GUI自定義視圖類中實現OnTouchListener。

+0

你真棒= D – KeirDavis 2013-05-12 12:11:46

相關問題