- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
由于 java.lang.nullpointerexception,我将强制关闭此 Activity 。它很可能与我的 SQLite 数据库命令有关,这是我第一次使用它们。
这是我的代码;
package com.example.gymbuddy;
import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.TextView;
public class Benchmark extends Activity {
//Declaring Database and Table
private final String MY_DATABASE_NAME = "GymBuddy.db";
private final String MY_DATABASE_TABLE = "benchmark";
private static final int iVersion = 1;
//Defining Table
private static class TableClass {
private static final String BenchmarkData = "dataBenchmark";
private static final String COL_VAR = "variable";
private static final String COL_VAL = "value";
}
//To refer to the Database
private SQLiteDatabase db;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_benchmark);
db.execSQL(String.format("CREATE_TABLE %s(%s INTEGER PRIMARY KEY, %s TEXT)",
TableClass.BenchmarkData, TableClass.COL_VAR, TableClass.COL_VAL));
}
public void onStart() {
super.onStart();
findViewById(R.id.button5).setOnClickListener(new handleButton5());
}
class handleButton5 implements OnClickListener {
public void onClick(View v) {
EditText editText1 = (EditText)findViewById(R.id.editText1);
String sWeight = editText1.getText().toString();
final double dWeight = Double.parseDouble(sWeight);
EditText editText2 = (EditText)findViewById(R.id.editText2);
String sPush = editText2.getText().toString();
final double dPush = Double.parseDouble(sPush);
EditText editText3 = (EditText)findViewById(R.id.editText3);
String sSit = editText3.getText().toString();
final double dSit = Double.parseDouble(sSit);
EditText editText4 = (EditText)findViewById(R.id.editText4);
String sPull = editText4.getText().toString();
final double dPull = Double.parseDouble(sPull);
double dBench = (((Math.floor(dWeight*.0664))*10)-10)+dPush;
double dFlies = (Math.floor(((Math.floor(dBench*.6)/10)*10)));
double dLats = ((Math.floor(dWeight*.05))*10)+dPull;
double dCurls = ((Math.ceil(((dWeight*dPull)*.025)/10))*10);
if(dCurls<20){
dCurls = 20;
}
double dClose = ((Math.floor(dBench*.065))*10);
double dRaise = 15;
double dDcurls = Math.floor(dCurls*.4);
double dDraise = 10;
double dLegExt = dWeight*.5;
double dPress = dWeight-20;
double dSquat = (Math.floor((Math.floor(dWeight/10))*.6))*10;
double dTricepExt = dDcurls+10;
double dTricepKick = dDcurls;
double dCalf = (Math.floor(dWeight*.035))*10;
double dDead = (Math.floor(dWeight*.13))*10;
int iBench = (int)dBench;
int iFlies = (int)dFlies;
int iLats = (int)dLats;
int iCurls = (int)dCurls;
int iClose = (int)dClose;
int iRaise = (int)dRaise;
int iDcurls = (int)dDcurls;
int iDraise = (int)dDraise;
int iLegExt = (int)dLegExt;
int iPress = (int)dPress;
int iSquat = (int)dSquat;
int iTricepExt = (int)dTricepExt;
int iTricepKick = (int)dTricepKick;
int iCalf = (int)dCalf;
int iDead = (int)dDead;
int iSit = (int)dSit;
TextView TextView1 = (TextView)findViewById(R.id.textView1);
TextView1.setText(String.valueOf("Bench Press "+ iBench +" lbs"));
TextView TextView2 = (TextView)findViewById(R.id.textView2);
TextView2.setText(String.valueOf("Bar Curls "+ iCurls +" lbs"));
TextView TextView3 = (TextView)findViewById(R.id.textView3);
TextView3.setText(String.valueOf("Close Grip "+ iClose +" lbs"));
TextView TextView4 = (TextView)findViewById(R.id.textView4);
TextView4.setText(String.valueOf("Deltoid Raise "+ iRaise +" lbs"));
TextView TextView5 = (TextView)findViewById(R.id.textView5);
TextView5.setText(String.valueOf("Dumbbell Curls "+ iDcurls +" lbs"));
TextView TextView6 = (TextView)findViewById(R.id.textView6);
TextView6.setText(String.valueOf("Dumbbell Raise "+ iDraise +" lbs"));
TextView TextView7 = (TextView)findViewById(R.id.textView7);
TextView7.setText(String.valueOf("Lat Pull Down "+ iLats +" lbs"));
TextView TextView8 = (TextView)findViewById(R.id.textView8);
TextView8.setText(String.valueOf("Leg Extension "+ iLegExt +" lbs"));
TextView TextView9 = (TextView)findViewById(R.id.textView9);
TextView9.setText(String.valueOf("Leg Press "+ iPress +" lbs"));
TextView TextView10 = (TextView)findViewById(R.id.textView10);
TextView10.setText(String.valueOf("Pec Flies "+ iFlies +" lbs"));
TextView TextView11 = (TextView)findViewById(R.id.textView11);
TextView11.setText(String.valueOf("Squats "+ iSquat +" lbs"));
TextView TextView12 = (TextView)findViewById(R.id.textView12);
TextView12.setText(String.valueOf("Tricep Extension "+ iTricepExt +" lbs"));
TextView TextView13 = (TextView)findViewById(R.id.textView13);
TextView13.setText(String.valueOf("Tricep Kickbacks "+ iTricepKick +" lbs"));
TextView TextView14 = (TextView)findViewById(R.id.textView14);
TextView14.setText(String.valueOf("Calf Raises "+ iCalf));
TextView TextView15 = (TextView)findViewById(R.id.textView15);
TextView15.setText(String.valueOf("Dead Lift "+ iDead +" lbs"));
TextView TextView16 = (TextView)findViewById(R.id.textView16);
TextView16.setText(String.valueOf("Sit Ups "+ iSit));
}
}
}
这是我的 LogCat;
09-22 18:12:34.190: D/dalvikvm(540): Not late-enabling CheckJNI (already on)
09-22 18:12:35.649: D/dalvikvm(540): GC_FOR_ALLOC freed 77K, 3% free 9962K/10179K, paused 67ms
09-22 18:12:35.669: I/dalvikvm-heap(540): Grow heap (frag case) to 11.786MB for 2069904-byte allocation
09-22 18:12:35.779: D/dalvikvm(540): GC_CONCURRENT freed 1K, 3% free 11982K/12231K, paused 4ms+14ms
09-22 18:12:35.979: D/dalvikvm(540): GC_FOR_ALLOC freed <1K, 3% free 11983K/12231K, paused 39ms
09-22 18:12:36.010: I/dalvikvm-heap(540): Grow heap (frag case) to 13.685MB for 1991824-byte allocation
09-22 18:12:36.129: D/dalvikvm(540): GC_CONCURRENT freed <1K, 3% free 13928K/14215K, paused 5ms+26ms
09-22 18:12:36.439: D/gralloc_goldfish(540): Emulator without GPU emulation detected.
09-22 18:12:42.999: D/AndroidRuntime(540): Shutting down VM
09-22 18:12:43.010: W/dalvikvm(540): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
09-22 18:12:43.029: E/AndroidRuntime(540): FATAL EXCEPTION: main
09-22 18:12:43.029: E/AndroidRuntime(540): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gymbuddy/com.example.gymbuddy.Benchmark}: java.lang.NullPointerException
09-22 18:12:43.029: E/AndroidRuntime(540): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
09-22 18:12:43.029: E/AndroidRuntime(540): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
09-22 18:12:43.029: E/AndroidRuntime(540): at android.app.ActivityThread.access$600(ActivityThread.java:122)
09-22 18:12:43.029: E/AndroidRuntime(540): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
09-22 18:12:43.029: E/AndroidRuntime(540): at android.os.Handler.dispatchMessage(Handler.java:99)
09-22 18:12:43.029: E/AndroidRuntime(540): at android.os.Looper.loop(Looper.java:137)
09-22 18:12:43.029: E/AndroidRuntime(540): at android.app.ActivityThread.main(ActivityThread.java:4340)
09-22 18:12:43.029: E/AndroidRuntime(540): at java.lang.reflect.Method.invokeNative(Native Method)
09-22 18:12:43.029: E/AndroidRuntime(540): at java.lang.reflect.Method.invoke(Method.java:511)
09-22 18:12:43.029: E/AndroidRuntime(540): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-22 18:12:43.029: E/AndroidRuntime(540): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-22 18:12:43.029: E/AndroidRuntime(540): at dalvik.system.NativeStart.main(Native Method)
09-22 18:12:43.029: E/AndroidRuntime(540): Caused by: java.lang.NullPointerException
09-22 18:12:43.029: E/AndroidRuntime(540): at com.example.gymbuddy.Benchmark.onCreate(Benchmark.java:34)
09-22 18:12:43.029: E/AndroidRuntime(540): at android.app.Activity.performCreate(Activity.java:4465)
09-22 18:12:43.029: E/AndroidRuntime(540): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
09-22 18:12:43.029: E/AndroidRuntime(540): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
09-22 18:12:43.029: E/AndroidRuntime(540): ... 11 more
最佳答案
所以,问题是这样的:
db.execSQL([...]);
你调用它但是你的数据库没有初始化所以首先你需要初始化它:
一小段代码:
DataSource handler = new DataSource(this);
SQLiteDatabase db = handler.getWritableDatabase();
...接下来使用 Cursors
等...
你的方法太糟糕了。非常好的和清晰的方法是使用 SQLiteOpenHelper
,这个类包装了您实现目标所需的一切。
这是一个简单的例子:
public class DataSource extends SQLiteOpenHelper {
protected static final String DB_NAME = "BmiCalcHistoryDatabase";
protected static final int START_DB_VERSION = 1;
/* columns */
protected static final String TABLE_NAME = "CalcHistory";
protected static final String KEY_ID = "id";
protected static final String KEY_RESULT = "result";
protected static final String KEY_TYPE = "type";
protected static final String KEY_DATE = "calcDate";
public DataSource(Context cntx) {
super(cntx, DB_NAME, null, START_DB_VERSION);
}
public void onCreate(SQLiteDatabase db) {
String CREATE_QUERY = "CREATE TABLE " + TABLE_NAME + "("
+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ KEY_RESULT + " TEXT NOT NULL, "
+ KEY_TYPE + " TEXT NOT NULL, "
+ KEY_DATE + " TEXT NOT NULL" + ");";
db.execSQL(CREATE_QUERY);
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String DELETE_QUERY = "DROP TABLE IF EXISTS " + TABLE_NAME;
db.execSQL(DELETE_QUERY);
onCreate(db);
}
}
你需要阅读一些教程,所以检查一下:
关于java - Activity 因 NullPointerException 而崩溃(也许是我的 SQLite 数据库命令?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12546521/
我正在将我的模板代码移植到 XTend。在某些时候,我在测试用例中有这种类型的条件处理: @Test def xtendIfTest() { val obj = new FD if (
我是新来的 kotlin , 当我开始 Null Safety 时,我对下面的情况感到困惑. There's some data inconsistency with regard to initia
我的应用程序一直在各种Android版本中保持良好状态。我有用户在Android 4.3、5.0、5.1和6.0上正常运行。但是,具有S7 Edge的用户刚刚更新了Android 7.0,将文本粘贴到
我使用的是最新版本的 LWUIT (1.5)。我在资源编辑器中设计了我的表单,然后将代码生成到 netbeans。问题是如果我想访问除表单之外的任何对象,我会收到此错误: java.lang.Null
更新: 我在 Fedora 21 上运行它。 SonarQube - 5.0。 SonarQube Runner - 2.4 更新 2:Findbugs v3.1,Java 插件 v2.8 更新3:
RecupData 我的类仅在 web 中返回 NullPointerException。我连接到 pgsql db 8.3.7 - 该脚本在“控制台”syso 中运行良好 - 但引发了测试 Web
我在 mac 上使用 Processing 2.08。我正在尝试使用文档中给出的 createShape 函数创建 PShape。 PShape s; void setup(){ size(500
我在 mac 上使用 Processing 2.08。我正在尝试使用文档中给出的 createShape 函数创建 PShape。 PShape s; void setup(){ size(500
每次运行此 jsp 时,都会收到以下错误异常: org.apache.jasper.JasperException: java.lang.NullPointerException root cause
Kotlin 在编译时有一个出色的 null 检查,使用分离到“可空?”和“不可为空”的对象。它有一个 KAnnotator 来帮助确定来自 Java 的对象是否可以为空。但是,如果 not-null
我有一个布局将显示一个TextView,用于显示一个滴答时间。我遵循了此链接中的代码 How to Display current time that changes dynamically for
Elasticsearch 1.4.1版(“lucene_version”:“4.10.2”) 我有一个像这样的文件: $ curl 'http://localhost:9200/blog/artic
这是我从另一个类调用函数的方法Selenium 设置已定义。 public void Transfer() throws Exception { System.out.println("\nTrans
我试图在主类中使用我在此类中创建的函数,但它崩溃并显示“警告:无法在根 0 处打开/创建首选项根节点 Software\JavaSoft\Prefsx80000002。 Windows RegCrea
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 3 年前。 我有一个 Java 代码,它将
我声明了两张牌: Card card1 = new Card('3', Card.Suit.clubs); Card card2 = new Card('T', Card.Suit.diamonds)
我编写了一段代码来解码 Base64 图像并在 javafx 中表示该图像。在我的 url base64 代码中不断变化。这就是我在 javafx 代码中使用任务的原因。但我收到错误:java.lan
我正在尝试使用 arrayList 的 arrayList 在 Java 中实现图形。 每当调用 addEdge 函数时,我都会收到 NullPointerException 。我似乎无法弄清楚为什么
我是 Java/android 的新手,所以很多这些术语都是外国的,但我愿意学习。我不打算详细介绍该应用程序,因为我认为它不相关。我目前的问题是,我使用了博客中的教程和代码 fragment ,并使我
我正在开发一个 Android 应用程序来在 Android developer guide 的帮助下录制视频.我程序上的所有代码都与此页面相同。 我在 之外定义了权限标签。 当应
我是一名优秀的程序员,十分优秀!