Ema*_*lin 6 android android-layout
我有这样的布局:
<com.mypackage.QuadPaneHorizontalSplit
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<!-- more views here -->
</com.mypackage.QuadPaneHorizontalSplit>
Run Code Online (Sandbox Code Playgroud)
QuadPaneHorizontalSplit类扩展了QuadPaneLayout(扩展了LineraLayout):
public class QuadPaneHorizontalSplit extends QuadPaneLayout {
public QuadPaneHorizontalSplit(Context context) {
super(context);
}
public QuadPaneHorizontalSplit(Context context, AttributeSet attrs) {
super(context, attrs);
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public QuadPaneHorizontalSplit(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected boolean isVerticalSplit() {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
使用setContentView设置布局后,我尝试检索自定义视图:
QuadPaneLayout quadPaneLayout = (QuadPaneLayout) findViewById(R.id.root_layout);
Run Code Online (Sandbox Code Playgroud)
一般来说效果很好,但我得到了一些崩溃报告,但有以下例外情况:
java.lang.ClassCastException:com.mypackage.QuadPaneHorizontalSplit无法强制转换为com.mypackage.QuadPaneLayout
QuadPaneHorizontalSplit显然扩展了QuadPaneLayout,因此不应该有例外.我收到Android 4.x设备和不同制造商的崩溃报告.有趣的是,所有的设备都扎根,所以也许这是一个自定义rom的问题?请注意,这行代码每天执行数千次没有问题,到目前为止我只有13次崩溃(BugSense),但我仍然想深究这一点.
我知道这个:https://stackoverflow.com/a/7823787/534471但我没有使用include这个布局,我不想添加合并标签,因为这可能会产生不良影响.
任何人都知道这里发生了什么?
我终于找到了这个问题的答案,其他开发人员也可能会感兴趣。
由于我遇到了许多其他莫名其妙的崩溃,包括VerifyErrors、ClassNotFoundExceptions 和 ActivityNotFoundExceptions,我对这些崩溃报告的来源产生了怀疑。我添加了一些“额外代码”,以确保应用程序没有被篡改,如果是,错误报告会显示这一点。事实上,所有 ClassCastException 崩溃都发生在我的应用程序实例中,这些实例显然已被破解,这也解释了为什么我只收到该应用程序付费版本的崩溃报告,以及为什么付费应用程序似乎比免费应用程序崩溃更频繁。
也许是时候花额外的钱购买 DexGuard 许可证了......
| 归档时间: |
|
| 查看次数: |
290 次 |
| 最近记录: |