2017-01-04 20 views
1

ユーザがスクロールアップまたはスクロールするときを知る必要があります。私はそれを達成することができましたが、今私はそれが必要な私のメインクラスに結果を戻すことに固執しています。具体的には、作成したインターフェイスに結果を渡す方法がわかりません。ここでカスタムScrollViewクラスを使用してインターフェイスを実装する - Android

は私が取得エラーです:

Attempt to invoke interface method 'void com.app.android.interfaces.ScrollDirection.Down(int)' on a null object reference

そして、ここでは私のカスタムScrollViewは次のとおりです。

public class CustomScrollView extends ScrollView { 

    private ScrollDirection scrolldirection; 

    public CustomScrollView(Context context) { 
     super(context); 
     scrolldirection = (ScrollDirection) context; 
    } 

    public CustomScrollView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public CustomScrollView(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    @Override 
    protected void onScrollChanged(int scrollX, int scrollY, int oldScrollX, int oldScrollY) { 
     super.onScrollChanged(scrollX, scrollY, oldScrollX, oldScrollY); 
     if(scrollY<oldScrollY){ 
      scrolldirection.Down(1); 
     }else{ 
      scrolldirection.Down(-1); 
     } 
    } 

    public interface ScrollDirection{ 
     public void Down(int direction); 
    } 
} 
+0

「scrolldirection」が初期化されていないようです。したがって、 'NullPointerException'。あなたのコンストラクタにデバッグポイントを入れて、楽しくてください! –

答えて

4

あなたはscrolldirection = (ScrollDirection) context;

public CustomScrollView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    scrolldirection = (ScrollDirection) context; 
} 

public CustomScrollView(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
    scrolldirection = (ScrollDirection) context; 
} 

すべてのコンストラクタ内のこの行を追加する必要がありますAndroid Studioでビューとのやりとりを許可するには、少なくともコンストラクタを指定する必要があります

Docs link

アップデートをパラメータとしてではコンテキストと属性セットオブジェクトを取ります。最近の問題は、彼らのcontextを持っていないFragmentけどFragmentCustomScrollViewの実装でした。これを実装するには、ActivityimplementsScrollDirectionとし、Fragmentに何らかの機能を作り、Activity'sDownからそれらを呼び出します。

+0

答えをありがとう。このコードを使用するとこのエラーが発生します。バイナリXMLファイル行#84:バイナリXMLファイル行#84:クラスcom.app.android.supportClass.CustomScrollViewをエバリュエートするエラー。 – student

+0

クリーンで実行してください。オプション –

+0

が動作しませんでした。 :/ – student

関連する問題