5

我正在开发一个 Android 项目,我正在尝试从https://github.com/PhilJay/MPAndroidChart实现一个名为 MPAndroidChart 的库。

我试图在一个片段中实现它,但我不断收到错误,我不明白为什么。

下面是我的活动。

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        Fragment chartFragment = new ChartFragment();
        transaction.replace(R.id.fragmentContainer, chartFragment);
        transaction.commit();
    }
}

下面是我的活动布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <include layout="@layout/toolbar" />
    <FrameLayout android:id="@+id/fragmentContainer"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

下面是我的片段类

public class ChartFragment extends Fragment
{
    private LineChart mChart;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.graph, container, false);



        return v;
    }
}

下面是片段的布局

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.github.mikephil.charting.charts.LineChart
        android:id="@+id/lineChart1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</FrameLayout>

目前,当它试图在我的 OnCreateView 函数中膨胀视图时它会崩溃。

我得到的错误是:

java.lang.RuntimeException:无法启动活动 ComponentInfo{com.MyCompany.ChartTest/com.MyCompany.ChartTest.MainActivity}:android.view.InflateException:二进制 XML 文件第 5 行:膨胀类 com.github.mikephil.charting 时出错.charts.LineChart

4

5 回答 5

1

我已经设法确认问题出在哪里。

我的应用程序主题在我的各种其他应用程序使用的库中定义,但由于某种原因,在使用 MPAndroidChartLib 时从库中引用主题时出现此异常。如果我将主题样式从我的库中复制并粘贴到我的应用程序自己的样式文件中并引用它,它就可以正常工作。

于 2014-12-27T02:03:55.577 回答
1

老实说,我看不出有什么问题。

Fragments我在示例项目中看到的唯一区别是它们使用wrap_content而不是match_parent图表的宽度和高度。

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

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

</FrameLayout>
于 2014-12-24T14:06:28.813 回答
0

我在这个确切的问题上苦苦挣扎,终于找到了一个可行的解决方案。

线索是图表片段的设计预览上的错误消息:

无法实例化以下类 :
charting.charts.LineChart

异常详细信息
java.lang.ClassNotFoundException:
com.nineoldandroids.animation.ValueAnimator$AnimatorUpdateListener

添加com.nineoldandroids:library:2.4.+到我的项目的 build.gradle 文件中解决了这个问题:

dependencies {
compile 'com.android.support:support-v4:19.1.0'
compile 'joda-time:joda-time:2.5'
compile 'com.nineoldandroids:library:2.4.+'
compile files('libs/MPChart.jar') 
}
于 2015-01-21T16:33:43.083 回答
0

试试这个,它可能会有所帮助:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.github.mikephil.charting.charts.LineChart
        android:id="@+id/lineChart1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</FrameLayout>

该行:

xmlns:app="http://schemas.android.com/apk/res-auto"

很重要。

我希望它有所帮助。

于 2014-12-19T11:18:26.460 回答
0

在 onCreate() 下面添加行对我有用

getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
于 2015-07-17T10:54:39.417 回答