- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
嗨,我正在尝试在饼图顶部实现一个抽屉导航,但它不断崩溃,但它似乎打开了其他 Activity ,非常感谢。我使用 apptheme 作为主题,使用 MpAndroidChart api 作为饼图
package com.example.gurpal.expenseapp;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Color;
import android.graphics.Paint;
import android.support.annotation.NonNull;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.Toast;
import com.github.mikephil.charting.charts.Chart;
import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;
import com.github.mikephil.charting.utils.ColorTemplate;
import com.github.mikephil.charting.utils.Utils;
import java.util.ArrayList;
public class PieChartActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener
{ActionBarDrawerToggle toggle;
Database db;
private static final int DURATION = 5000;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pie_chart);
getSupportActionBar().setDisplayShowCustomEnabled(true);
db = new Database(this);
Cursor res= db.ViewData();
PieChart expensesPieChart = (PieChart)findViewById(R.id.chart);
ArrayList<Entry> entries = new ArrayList<>();
ArrayList<String> expensesCategories = new ArrayList<>();
if(res.getCount() > 0)
{
int count = 0;
res.moveToFirst();
do
{
entries.add(new Entry((float)res.getDouble(2), count));
expensesCategories.add(res.getString(1));
count++;
} while(res.moveToNext());
}
PieDataSet expensesDataSet = new PieDataSet(entries, null);
PieData expensesData = new PieData(expensesCategories, expensesDataSet);
expensesDataSet.setColors(ColorTemplate.COLORFUL_COLORS);
expensesPieChart.setDrawSliceText(false);
expensesPieChart.setCenterText("Expenses");
expensesPieChart.setCenterTextSize(30);
expensesPieChart.setDescription("Money spent (in $CAD)");
expensesDataSet.setValueTextSize(25);
expensesPieChart.setDescriptionColor(Color.WHITE);
expensesPieChart.setData(expensesData);
Legend legend = expensesPieChart.getLegend();
legend.setFormSize(15); // set the size of the legend forms/shapes
legend.setForm(Legend.LegendForm.CIRCLE); // set what type of form/shape should be used
legend.setWordWrapEnabled(true);
legend.setTextSize(15);
legend.setTextColor(Color.WHITE);
expensesPieChart.animateY(DURATION);
expensesPieChart.invalidate();
DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
toggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.open, R.string.close);
drawerLayout.addDrawerListener(toggle);
toggle.syncState();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
NavigationView navigationView = (NavigationView) findViewById(R.id.navigationView);
navigationView.setNavigationItemSelectedListener(this);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(toggle.onOptionsItemSelected(item))
return true;
return super.onOptionsItemSelected(item);
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.nav_menu_1:
startActivity(new Intent(PieChartActivity.this, NavDrawer.class));
break;
case R.id.nav_menu_2:
startActivity(new Intent(PieChartActivity.this, Expenses.class));
break;
case R.id.nav_menu_3:
startActivity(new Intent(PieChartActivity.this, Income.class));
break;
case R.id.nav_menu_4:
startActivity(new Intent(PieChartActivity.this, PieChartActivity.class));
break;
case R.id.nav_menu_5:
Toast.makeText(PieChartActivity.this, "menu button test 5", Toast.LENGTH_SHORT).show();
break;
}
DrawerLayout dl = (DrawerLayout) findViewById(R.id.drawerLayout);
if(dl.isDrawerOpen(GravityCompat.START))
dl.closeDrawer(GravityCompat.START);
return false;
}
}
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.gurpal.expenseapp.PieChartActivity"
android:id="@+id/drawerLayout">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.github.mikephil.charting.charts.PieChart
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/chart"
/>
</RelativeLayout>
<android.support.design.widget.NavigationView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:menu="@menu/nav_menu"
android:layout_gravity="start"
android:id="@+id/navigationView">
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
最佳答案
尝试删除饼图tools:context
:
tools:context="com.example.gurpal.expenseapp.PieChartActivity"
关于使用 MpAndroidChart api 饼图 api 时出现 java.lang.IllegalArgumentException : DrawerLayout must be measured with MeasureSpec. EXACTLY.error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40813848/
我一直在尝试实现塔詹的算法来测量图中的强连通分量。既然我还没有找到任何东西,谁能提供指导,说明如何在阿帕奇时代实现塔詹的算法来测量节点之间的连通性?以下是用python编写的代码。如何使用Apache
我正在尝试更新我的一个 Android 项目的依赖项,但我收到了这个奇怪的错误。 罪魁祸首是这一行,对于 AdMob(我之前使用的是 20.6.0): implementation "com.goog
我在一个目录中有六个 .txt 文件。因此,我创建了一个变量: $foo = gci -Name *.txt $foo 现在是一个包含六个字符串的数组。就我而言,我有 PS > $foo Extens
可能已经在其他一些上下文和依赖项中询问了这个问题。 但即使花了一整天,我仍然无法弄清楚这一点。 所以下面我将完整的错误日志与我的项目级 Gradle 文件和应用级 Gradle 文件一起粘贴。 尝试运
对于我的应用程序,我需要保留用户首选的度量单位。 目前可能的单位是: 升(存储我数据库其余部分的值的单位) 千克(随产品密度变化) 美国液体加仑(3.785411784 升) 美国液体夸脱(以上的 1
我的应用程序遇到性能问题。本质上,我单击一个按钮,列表中填充了数据绑定(bind)数据(由于数据量大,这是虚拟化的),然后单击另一个按钮,该按钮将向关联的 ListView 添加一行。我含糊其词是因为
我需要将一个 Path 对象与另一个进行比较。首先,我在 onTouchEvent 的一个路径中收集所有绘制的对象: switch (event.getAction()) {
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 5 年前。 Improve
swift 4.2 Xcode 10β2 背景 我正在整合一个与天文学相关的 API 来处理我正在开发的应用程序中的数学运算。目的是使用 Measurement 类来处理角度和距离的输入和输出。通过这
前言 View 的工作原理中最重要的就是测量、布局、绘制三大过程,而其中测量是最复杂的; 那么我们就来介绍下View 的测量过程; 1、MeasureSpec 测量自身的大小的时候,会
我知道 getBoundingClientRect() 返回类型为 ClientRect 或 DOMRect 的对象,并且每个对象通常都具有 x、y、width、height 等。如果您 typeof
我有一个脚本来测量执行时间,但是当我使用 Measure-Command 时,我收到了似乎不准确的信息。例如,我自己为脚本计时,大约需要 15 秒才能完成。然而,这里是最后两个输出。如您所见,一个为负
我想从屏幕顶部确定元素的位置。从其他问题来看,一种方法是使用 react native 的 .measure 属性? 引用问题:React Native: Getting the position o
我编写了以下类来通过 GoogleAnalytics 测量我的服务器端流量测量协议(protocol)。 问题是所有活跃的访问者都来自我的服务器当前所在的意大利 - 我假设问题原因来自 fsockop
我想根据规则的数量和规则的复杂性来衡量流口水的表现。因此,我需要测量处理事件所需的时间。我想编写一个像这样的简单测试: long start = System.currentTimeMillis();
考虑以下代码 import numpy as np from skimage import measure def mse(x, y): return np.mean(np.square(x
什么是统一坐标测量? (厘米、米、公里) 如何在其中实现实实在在的措施? 我想在 Unity 中实现一个真正的措施。怎么做? public Vector2 GetAsMeters (Vector2 v
我正在从事一个情感分析项目,而且我是 Python 初学者。我需要计算召回率、精度和 f 度量,但我不知道数据集的语法,如下所示: #The train data format ,contains t
我正在使用 javax.measure 将用户输入转换为秒,秒数可以从秒到天不等,但是从任何单位转换为另一个单位不起作用,这是我设置的。 String units = "d"; double valu
我正在尝试开发 android 应用程序以获取有关网络信息测量的低级信息。 我想知道如何获取这些数据? 3G:-RSCP-ECNO(不是 Eclo)-BER 2G:-RxLevelQuality-Rx
我是一名优秀的程序员,十分优秀!