java - 无法使用 findViewById 找到 mpandroidchart

标签 java android

我有以下 Activity main.xml 文件

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="com.example.bright.myapplication.MainActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

    <include layout="@layout/content_main" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        android:src="@android:drawable/ic_dialog_email"
        app:backgroundTint="#088A08"
        />

</android.support.design.widget.CoordinatorLayout>

content.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.example.bright.myapplication.MainActivity"
    tools:showIn="@layout/activity_main"
    android:id="@+id/mylayout"
    >


    <com.github.mikephil.charting.charts.BarChart
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:id="@+id/chart"

        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="62dp"

        android:layout_alignParentEnd="true">

    </com.github.mikephil.charting.charts.BarChart>
</RelativeLayout>

下面提到了MainActivity.java

MainActivity.java

    public class MainActivity extends AppCompatActivity {    
    private RelativeLayout myLayout;
           @Override    protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);


           BarChart chart = (BarChart) findViewById(R.id.chart);

           BarData data = new BarData(getXAxisValues(), getDataSet());
           chart.setData(data);
           chart.setDescription("My Chart");
           chart.animateXY(2000, 2000);
           chart.invalidate();
           setContentView(chart);    
        } 
}

当我使用 findViewById(R.id.chart) 时,图表初始化为 null。所以我无法使用该图表。请帮我修复它。

最佳答案

问题是您在初始化后调用 setContentView() 。你有两个选择。第一个是将 BarChart 初始化为 this,然后在 setContentView() 中作为参数调用它,第二个是设置布局作为 setContentView() 中的参数,并在下面初始化 BarChart

例如

第一

    @Override    
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);

       BarChart chart = this;

       BarData data = new BarData(getXAxisValues(), getDataSet());
       chart.setData(data);
       chart.setDescription("My Chart");
       chart.animateXY(2000, 2000);
       chart.invalidate();
       setContentView(chart);  
    } 

第二

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

           BarChart chart = (BarChart) findViewById(R.id.chart);

           BarData data = new BarData(getXAxisValues(), getDataSet());
           chart.setData(data);
           chart.setDescription("My Chart");
           chart.animateXY(2000, 2000);
           chart.invalidate();
     }

关于java - 无法使用 findViewById 找到 mpandroidchart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35317298/

相关文章:

android - RecyclerView 不更新数据

android - 如何在销毁创建周期之间保存 tabhost 选项卡

java - 垃圾收集器不工作

java - Andengine新 Activity - list

java - 字符串数组在项目文本后放置一个逗号

java - 如何返回数组项的个数?为什么不幸停止了?

android - Activity 恢复时相机预览屏幕变黑

设置蓝牙服务名称的Android问题

java - 有没有办法将Java代码编译成DLL?

java - windows 7 java weka 的类路径在哪里