android studio在创建条形图时退出

6qftjkof  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(274)

当我在mainactivity上的editview中输入所有信息,然后单击“计算”时,将出现一个对话框,其中包含我设置的内容。然后应该移动到另一个名为“barchartactivity”的屏幕,在那里应该创建一个条形图。当它移动到条形图活动时,应用程序就退出了。代码如下:
主活动.java

public class MainActivity extends AppCompatActivity {

    Button button;
    EditText totalstudents, astudents, bstudents, cstudents, dstudents, fstudents;
    float totalnum, apercent, bpercent, cpercent, dpercent, fpercent, afinal, bfinal, cfinal, dfinal, ffinal;

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

        totalstudents = findViewById(R.id.total);
        astudents = findViewById(R.id.a);
        bstudents = findViewById(R.id.b);
        cstudents = findViewById(R.id.c);
        dstudents = findViewById(R.id.d);
        fstudents = findViewById(R.id.f);
        button = findViewById(R.id.compute);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                checkValues();
            }
        });
    }

    public void checkValues(){

        if (totalstudents.getText().toString().equals("") | astudents.getText().toString().equals("") | bstudents.getText().toString().equals("") | cstudents.getText().toString().equals("") | dstudents.getText().toString().equals("") | fstudents.getText().toString().equals("")) {
            Toast.makeText(this, "Missing Information.", Toast.LENGTH_SHORT).show();
        } else {

            apercent = Float.parseFloat(astudents.getText().toString());
            bpercent = Float.parseFloat(bstudents.getText().toString());
            cpercent = Float.parseFloat(cstudents.getText().toString());
            dpercent = Float.parseFloat(dstudents.getText().toString());
            fpercent = Float.parseFloat(fstudents.getText().toString());
            totalnum = Float.parseFloat(totalstudents.getText().toString());

            afinal = apercent / totalnum * 100;
            bfinal = bpercent / totalnum * 100;
            cfinal = cpercent / totalnum * 100;
            dfinal = dpercent / totalnum * 100;
            ffinal = fpercent / totalnum * 100;

            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("A Students " + afinal + "% \n" + "B Students " + bfinal + "% \n" + "C Students " + cfinal + "% \n" + "D Students " + dfinal + "% \n" + "F Students " + ffinal + "%");

            //Chart

            builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Intent showHome = new Intent(MainActivity.this, BarChartActivity.class);
                    MainActivity.this.startActivity(showHome);
                }
            });
            builder.setCancelable(false);
            builder.show();
        }
    }
}

barchartactivity.java,

public class BarChartActivity extends AppCompatActivity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bar);
        drawChart();
    }

    private void drawChart() {

        BarChart barChart;

        barChart = findViewById(R.id.barChart);

        ArrayList<BarEntry> entries = new ArrayList<>();
        entries.add(new BarEntry(38f, 0));
        entries.add(new BarEntry(52f, 1));
        entries.add(new BarEntry(65f, 2));
        entries.add(new BarEntry(30f, 3));
        entries.add(new BarEntry(85f, 4));
        entries.add(new BarEntry(19f, 5));
        entries.add(new BarEntry(75f, 6));

        BarDataSet bardataset = new BarDataSet(entries, " ");

        ArrayList<String> labels = new ArrayList<String>();
        labels.add("A");
        labels.add("B");
        labels.add("C");
        labels.add("D");
        labels.add("F");

        BarData data = new BarData((IBarDataSet) labels, bardataset);
        barChart.setData(data);

        bardataset.setColors(ColorTemplate.COLORFUL_COLORS);

        barChart.animateY(5000);
    }
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题