我在两个不同的活动中有完全相同的代码(当然有不同的 xml 布局和不同的变量名和 id)
它只是一个将父宽度/高度与 onTouchListener 匹配的图像视图,它在触摸时启动一个函数。
第二个活动也是如此。(这些活动彼此无关,而是开始另一个并杀死它自己。
ImageView wall;
TextView welcome;
Typeface tf;
Sound sound;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.start);
sound = new Sound(Start.this);
welcome = (TextView) findViewById(R.id.welcome);
wall = (ImageView) findViewById(R.id.wall);
live();
}
private void live()
{
wall.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
v.setPressed(true);
next(); //starts a new activity and kills self (this.finish())
break;
default:
v.setPressed(false);
break;
}
return true;
}
});
}
然后是第二个活动
Sound sound;
ImageView ball;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.next1);
sound = new Sound(next1.this);
ball = (ImageView) findViewById(R.id.ball);
ball.setEnabled(true);
live();
}
private void live()
{
//it's calling so far...
//but the listener wont work
ball.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
v.setPressed(true);
startFunction();
break;
default:
v.setPressed(false);
break;
}
return true;
}
});
}
这是一个转折点,ontouchlistsner 或 clicklistener 或任何在第一个活动中正常工作,但在第二个活动中,ontouch 或 onclick 都不起作用,但如果我在 xml 文件中设置 onclick,它可以工作,wtfisupwiththat...?
编辑:我的 xml 文件。他们也差不多,
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
tools:context=".Start">
<ImageView
android:id="@+id/wall"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff3242"/>
</RelativeLayout>
和 next1.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
tools:context=".next1">
<ImageView
android:id="@+id/ball"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#333333"/>
</RelativeLayout>