1

我正在使用droidQuery库向我的应用程序添加一些手势检测。我在我的 xml 文件中添加 SwipeInterceptorView 时遇到问题(请参见此处的原始问题,因此我在我的onCreate方法中定义它并为其提供相同的参数。然后我使用 将它添加到我的布局中layout.addView(swipeInterceptorView)。我试图将它添加到我的XML布局文件中,但我有一个错误。

是在定义SwipeInterceptorView编程上的良好实践,还是应该将其添加到我的XML文件中?如果我应该,我该如何修复这个XML文件?:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/table"
    android:orientation="vertical" >
    <self.philbrown.SwipeInterceptorView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/swipe_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </self.philbrown.SwipeInterceptorView>
    <FrameLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

当我使用这个布局时,我得到了Runtime error java.lang.ClassNotFoundException

另外,我知道如何将 the 添加onClickListener到 anImageView中,但是谁能告诉我应该如何将侦听器添加到 a 中TextView

谢谢你的帮助!

4

1 回答 1

1

以编程方式定义 SwipeInterceptorView 是一种好的做法,还是应该将其添加到我的 XML 文件中?

最佳实践是定义Viewin XML,因为这提供了一个可重用的文件(因此您可以在应用程序的其他地方使用它,或者在另一个应用程序中再次使用它)。

也就是说,以编程方式实例化它并不是一个习惯——它只是降低了可重用性因素。

如何修复此 XML 文件?

我目前不确定为什么这不起作用。我将尽快更详细地研究它。同时,可以肯定的是下载整个项目,将其导入您的工作区,并将其添加为库项目,而不是jar

另外,我知道如何将 onClickListener 添加到 ImageView,但谁能告诉我应该如何将侦听器也添加到 TextView?

您可以以完全相同的方式添加点击侦听器:

mTextView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //your code
    }
});

如果您想充分利用该droidQuery库,您可以选择使用以下方法之一:

点击

$.with(mTextView).click(new Function() {
    @Override
    public void invoke($ droidQuery, Object... params) {
        //your code
    }
});

$.with(mTextView).on("click", new Function() {
    @Override
    public void invoke($ droidQuery, Object... params) {
        //your code
    }
});

一个(仅处理单击一次)

$.with(mTextView).one("click", new Function() {
    @Override
    public void invoke($ droidQuery, Object... params) {
        //your code
    }
});

绑定

Object data = new Object();//could be anything
$.with(mTextView).on("click", data, new Function() {
    @Override
    public void invoke($ droidQuery, Object... params) {//data will be passed as a param
        //your code
    }
});
于 2013-08-20T13:44:35.703 回答