Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我试图清除所有数据时,应用程序已停止_Java_Android_Sqlite - Fatal编程技术网

Java 当我试图清除所有数据时,应用程序已停止

Java 当我试图清除所有数据时,应用程序已停止,java,android,sqlite,Java,Android,Sqlite,我试图清除数据库中表中的所有数据,但成功了,但唯一的问题是,每次我按下“清除”按钮时,它都会清除所有数据,但之后应用程序显示它已停止 我哪一部分出错了?以下是我的数据库编码: public boolean deleteRow(long id) { SQLiteDatabase db = helper.getWritableDatabase(); String where = data.UID + "=" + id; return db.dele

我试图清除数据库中表中的所有数据,但成功了,但唯一的问题是,每次我按下“清除”按钮时,它都会清除所有数据,但之后应用程序显示它已停止

我哪一部分出错了?以下是我的数据库编码:

public boolean deleteRow(long id) {

        SQLiteDatabase db = helper.getWritableDatabase();
        String where = data.UID + "=" + id;
        return db.delete(data.TABLE_NAME, where, null) != 0;
    }

    public void DeleteAll(){

        Cursor c = readEntry();
        long id = c.getColumnIndexOrThrow(data.UID);
        if (c.moveToFirst()) {
            do {
                deleteRow(c.getLong((int) id));
            } while (c.moveToNext());
        }
        c.close();
        return;
    }
和来自另一个java的代码:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.showbmi);
        initializeApp();
    }
    private void initializeApp(){

        weightinputid = (EditText) findViewById(R.id.weightid);
        heightinputid = (EditText) findViewById(R.id.heightid);
        buttonBMI = (Button) findViewById(R.id.buttonBMI);
        BMIfinal= (TextView) findViewById(R.id.BMIfinal);
        BMIStatus = (TextView) findViewById(R.id.BMIstatus);
        save = (Button) findViewById(R.id.button);
        detail = (Button)findViewById(R.id.button1);
        bb = (Button)findViewById(R.id.bb);
        table_layout = (TableLayout) findViewById(R.id.tableLayout1);

        data  = new fitnessdatabase(this);
        BuildTable();
        bb.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                data.DeleteAll();
                new MyAsync().execute();
            }
        });



private class MyAsync extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {

            super.onPreExecute();

            table_layout.removeAllViews();

            PD = new ProgressDialog(Showbmi.this);
            PD.setTitle("Please Wait..");
            PD.setMessage("Loading...");
            PD.setCancelable(false);
            PD.show();
        }

        @Override
        protected Void doInBackground(Void... params) {

            String weight = weightinputid.getText().toString();
            String bmi = BMIfinal.getText().toString();
            String status = BMIStatus.getText().toString();
            String date1 = mDateText.getText().toString();

            // inserting data
            data.open();
        //    sqlcon.insertData(firstname, lastname);
            long id = data.insertData(weight, bmi, status, date1);
            BuildTable();
            return null;
        }

        }

当您尝试
data.Open()
时,它会遇到一个未初始化的变量,就像您在私有空间中初始化它一样。将其更改为public或将所有代码放入您创建的包中。因为UI控件也将为空

编辑使用logcat更新的日志确认了这一点。在后台做

原因:java.lang.NullPointerException 位于com.example.adiehabs.fitnessku.Showbmi$MyAsync.doInBackground(Showbmi.java:188)

private void initializeApp(){

我将使用: 将光标移动到第一个位置,仅当光标未超过最后一项时才移动光标

  c.moveToFirst(); 
       while(!c.isAfterLast()) {
            deleteRow(c.getLong((int) id));
           c.moveToNext();
        } 
    }
另一件事:

您是否已在主范围
表布局
PD
中声明了这些变量?

应用程序没有响应通常来自空指针异常。

当您尝试
data.Open()
时,当您在私有空间中初始化未初始化的变量时,它会命中该变量。将其更改为public或将所有代码放入您创建的捆绑包中。因为UI控件也将为空

编辑使用logcat更新的日志确认了这一点。在后台执行

原因:java.lang.NullPointerException 位于com.example.adiehabs.fitnessku.Showbmi$MyAsync.doInBackground(Showbmi.java:188)

private void initializeApp(){

我将使用: 将光标移动到第一个位置,仅当光标未超过最后一项时才移动光标

  c.moveToFirst(); 
       while(!c.isAfterLast()) {
            deleteRow(c.getLong((int) id));
           c.moveToNext();
        } 
    }
另一件事:

您是否已在主范围
表布局
PD
中声明了这些变量?
应用程序没有响应通常来自空指针异常。

删除所有表行

public boolean deleteTable(){

    return mSQLiteDatabase.delete(DataBaseHelper.TABLE, null, null) > 0;
}
删除所有表行

public boolean deleteTable(){

    return mSQLiteDatabase.delete(DataBaseHelper.TABLE, null, null) > 0;
}

你有堆栈跟踪吗?你的命名“约定”不是java…请发布logcat输出。我已经和logcat错误一起编辑了我的帖子。你有堆栈跟踪吗?你的命名“约定”我已经编辑了我的帖子和logcat错误我的问题解决了,我编辑了后台部分的do并在其中包含了delete方法,谢谢,我的问题解决了,我编辑了后台部分的do并在其中包含了delete方法,谢谢