【发布时间】:2016-02-04 16:00:19
【问题描述】:
下面的代码展示了一个抽象的Activity(AppActivity),其他的Activity都得从其扩展而来。已经定义了一个布局,但只继承了一个圆形按钮(扩展 ImageView)。
MainActivity 定义了一个自己的布局,它必须包含前面提到的按钮。查看我目前的结果,Button成功被继承并显示,不能为空
尽管如此,附加到此 ImageView 的 onTouchListener() 永远不会从视角“MainActivity”调用。请注意,如果 MotionEvent.ACTION_DOWN 和 UP 发生,我会返回 true。所以这不可能是原因。有什么建议吗?
带有 CircleButton 的抽象 Activity(扩展 ImageView)包括 onTouchListener()
public abstract class AppActivity extends Activity {
public CircleButton circleButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.voice_btn_layout);
circleButton = (CircleButton) findViewById(R.id.voiceControlBtn);
circleButton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.i("TOUCH", "");
if (event.getAction() == MotionEvent.ACTION_DOWN) {
ButtonGotPressed();
return true;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
circleButton.ButtonGotReleased();
return true;
}
return false;
}
});
}
从 AppActivity 扩展的 Activity
public class MainActivity extends AppActivity implements ICadeCommand {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(eu.alfred.batterywarnerapp.R.layout.activity_main);
}
activity_main.xml(用于 MainActivity)
<RelativeLayout .../>
<include layout="@layout/voice_btn_layout" />
</RelativeLayout>
voice_btn_layout.xml(用于 AppActivity)
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="80dip"
android:layout_height="80dip"
android:layout_margin="15dip"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true">
<packagename.CircleButton
...
android:scaleType="fitXY"/>
</FrameLayout>
【问题讨论】:
标签: java android xml inheritance ontouchlistener