2

我正在尝试使用SlidingTray。但是将示例添加到我的视图中它会给出NullPointerException.SlidingTray.onLayout()

在安卓 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

我已经使用这个库有一段时间了,并且遇到了同样的错误。由于我将项目变成了一个 android 库项目,而不仅仅是使用 jar,所以我能够检测到错误在哪里。

在第 455 行,switch (mHandlePos) {这里是空指针。

查看代码,这个 mHandlePos 有一个 setter,所以我所做的就是调用这个 setter,我很高兴。看看这个:

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

我使用了这个库,我也遇到了同样的错误。有一个公共方法

slidingTray.setHandlePosition(Side side);

只需调用此函数并将您的身边传递为

slidingTray.setHandlePosition(Side.BOTTOM);

那么它将起作用。

但是我有一个问题,我没有进行滑动,我不知道为什么...... :-(

于 2014-01-14T08:46:52.633 回答
0

对于这个错误,我很抱歉。我已经解决了新版本 3.5 中的问题,该版本可直接从我的网站获得: http: //aniqroid.sileria.com

感谢您使用该库,并随时报告错误。

于 2015-02-16T16:15:50.803 回答