1

droidQueryライブラリを使用して、ジェスチャー検出をアプリに追加しています。SwipeInterceptorView を xml ファイルに追加する際に問題が発生しました (元の質問hereを参照してください。メソッド内で定義し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>

このレイアウトを使用すると、ランタイム エラーが発生 java.lang.ClassNotFoundExceptionします。

また、 を に追加する方法は知ってonClickListenerImageViewますが、リスナーを に追加する方法を誰か教えてもらえます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
    }
});

1 つ(1 回のクリックのみを処理)

$.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 に答える