2

SlidingTrayを使用しようとしています。しかし、私のビューに例を追加するとNullPointerExceptionSlidingTray.onLayout().

Android 4.1 でのテスト。

スタック:

09-29 01:31:06.840: E/AndroidRuntime(8905): FATAL EXCEPTION: main
09-29 01:31:06.840: E/AndroidRuntime(8905): java.lang.NullPointerException
09-29 01:31:06.840: E/AndroidRuntime(8905):     at com.sileria.android.view.SlidingTray.onLayout(Unknown Source)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.view.View.layout(View.java:11359)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.view.ViewGroup.layout(ViewGroup.java:4571)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.widget.RelativeLayout.onLayout(RelativeLayout.java:925)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.view.View.layout(View.java:11359)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.view.ViewGroup.layout(ViewGroup.java:4571)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1399)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.view.View.layout(View.java:11359)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.view.ViewGroup.layout(ViewGroup.java:4571)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.widget.FrameLayout.onLayout(FrameLayout.java:431)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.view.View.layout(View.java:11359)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.view.ViewGroup.layout(ViewGroup.java:4571)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1399)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.view.View.layout(View.java:11359)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.view.ViewGroup.layout(ViewGroup.java:4571)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.widget.FrameLayout.onLayout(FrameLayout.java:431)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.view.View.layout(View.java:11359)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.view.ViewGroup.layout(ViewGroup.java:4571)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1665)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2700)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.os.Looper.loop(Looper.java:156)
09-29 01:31:06.840: E/AndroidRuntime(8905):     at android.app.ActivityThread.main(ActivityThread.java:5045)

この例外が表示される理由はありますか?

4

3 に答える 3

4

私はこのライブラリをしばらく使用していますが、この同じエラーに悩まされています。単にjarを使用するのではなく、プロジェクトをAndroidライブラリプロジェクトに変えたので、エラーの場所を検出できました。

455 行switch (mHandlePos) {目にヌルポインタがあります。

コードを見ると、この mHandlePos のセッターがあるので、このセッターを呼び出すだけで問題ありませんでした。見てみな:

FrameLayout content = (FrameLayout) LayoutInflater.from(this).inflate(R.layout.historico_main, null);
    ImageView handler = new Tools(this).newImage(R.drawable.historico_handler);

    SlidingTray historico = new SlidingTray(this, handler, content, SlidingTray.TOP);

    RelativeLayout parent = (RelativeLayout) this.findViewById(R.id.main_parent);
    historico.setHandlePosition(Side.TOP);
    parent.addView(historico, new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

開発者がコンストラクターでハンドラーのデフォルト位置を設定するのを忘れたと思います。setHandlePositionソースコードを変更しなくても、 を呼び出すことができました。

于 2012-10-15T00:09:53.007 に答える
0

I used this library, I got also same error. There is a public method

slidingTray.setHandlePosition(Side side);

just call this function and pass your side as

slidingTray.setHandlePosition(Side.BOTTOM);

then It will work.

But I have an issue, I didn't work on sliding, I don't know why...:-(

于 2014-01-14T08:46:52.633 に答える
0

このエラーについて申し訳ありません。私のウェブサイトから直接入手できる新しいリリース 3.5 で問題を修正しました: http://aniqroid.sileria.com

ライブラリをご利用いただきありがとうございます。また、お気軽にバグを報告してください。

于 2015-02-16T16:15:50.803 に答える