小编Sch*_*get的帖子

检索自定义视图时出现Android ClassCastException

尝试使用findViewById()获取自定义View时,我遇到了一个问题.否则,自定义视图将正确显示和运行.不幸的是,我需要能够随意更改它显示的一些数据,因此必须完成.

我的XML看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

  <com.TheProject.TheApp.Chart 
    android:id="@+id/chart"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
  />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我知道有时问题是人们不小心在XML中命名组件"View"而不是它们的子类.

在我的Activity的onCreate()方法中,我有这个:

myChart=(Chart)findViewById(R.id.chart); //where myChart is an object of type Chart
Run Code Online (Sandbox Code Playgroud)

抛出ClassCastException.

我决定尝试一下,然后将行更改为此,以查看是否仍然收到ClassCastException:

View chart=(View)findViewById(R.id.chart);
Run Code Online (Sandbox Code Playgroud)

这很好用,告诉我findViewById给我一个View没有问题.但它不想给我一张图表.

就Chart类而言,它是View的一个非常简单的子类,看起来可以正常工作.

public class Chart extends View{
    public Chart(Context context) {
    super(context);     
    init();
}

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

public Chart(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);        
    init();     
}
    /* More stuff below like onDraw, onMeasure, setData, etc. */
}
Run Code Online (Sandbox Code Playgroud)

我可能只是在做一些愚蠢的事情.你们有什么想法吗?谢谢你的帮助!

java android view classcastexception

5
推荐指数
1
解决办法
1624
查看次数

简化数据库ER图/架构

对于学校项目,我们必须创建自己的数据库.我决定创建一个数据库来管理我的电子元件库存.作为一项要求,我们需要创建一个ER图,然后从该图中派生出数据库模式.不幸的是,教授认为我创建的图表可以简化,"Part"实体是不必要的.

是我提出的图表,是派生的架构.

如果我删除Part实体,那么为了让Circuit实体"使用"任意数量的任何部分,并使每个部分与可能的任何电路相关联,我将不得不从每个组件获得单独的M-to-N关系输入电路.这些关系中的每一个都会生成一个新表.这肯定会超过我们允许的项目的严格最大数量.

如果教授特别提到Part是不必要的,那么必须有一些方法来删除它,导致更简单的ER图和模式 - 但我看不出它是什么.

也许你们可以看到它是什么并给我一个提示?

编辑:丹W有一个很好的建议.我可以通过给每个部件类型(电容器,电阻器等)自己的键来消除该部件.然后在使用部分内部,包括那些组件的外键.我不得不假设表的每个条目只与一个部分相关联,其余部分为空.这是结果模式.这个架构应该运行良好.但是现在我必须弄清楚对ER图的修改到底对应于这个模式.

EDIT2:我得出结论,我正在寻找的关系是n-ary.根据几个来源,要从n-ary转换为模式,您将每个参与实体类型的关系的主键包含为外键.然后添加简单属性.就是我提出的.

sql database database-design er-diagrams

5
推荐指数
1
解决办法
1962
查看次数