尝试为Android中预先存在的类创建扩展类

时间:2016-05-07 18:06:56

标签: java android xml android-activity mpandroidchart

所以我使用MPAndroidChart LineCharts,这意味着在XML中我用这种方式定义:

<com.github.mikephil.charting.charts.LineChart
    android:id="@+id/line_chart"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

但是我尝试使用各种默认设置等来使用此图表,所以我创建了一个自定义类来尝试扩展它:

public class MyLineChart extends com.github.mikephil.charting.charts.LineChart {
    private Context mContext;

    public MyLineChart(Context context) {
        super(context);
        mContext = context;
    }
    //...

在我想要使用它的代码中的其他地方,我有:

private MyLineChart mChart;

...

mChart = new MyLineChart(getActivity());
mChart = (MyLineChart) findViewById(R.id.line_chart);

这一切似乎编译得很好,但是它会引发运行时错误,因为它说我无法将LineChart转换为MyLineChart。

1 个答案:

答案 0 :(得分:1)

为了能够在xml中使用MyLineChart,你需要在那里再定义两个构造函数,例如:

public class MyLineChart extends com.github.mikephil.charting.charts.LineChart {
    private Context mContext;

    public MyLineChart(Context context) {
        super(context);
        mContext = context;
    }

    public MyLineChart(Context context, AttributeSet attrs) {
        super(context, attrs);
        mContext = context;
    }

    public LineChart(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        mContext = context;
    }

    // ...
}