非常急!!!!大神们,android这是什么情况SQLite报错啊

LCOracle 2017-02-11 10:26:16

package com.lcfuture.digitialmenu;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.lcfuture.digitialmenu.bean.Menu;
import com.lcfuture.digitialmenu.db.DBHelper;

import java.util.ArrayList;
import java.util.List;

/**
* Created by lcfut on 2017/2/9.
*/

public class MenuActivity extends AppCompatActivity {
private ListView listView;
private List<Menu> menuList;
private Cursor cursor;
MenuAdapter adapter;
Context context;
DBHelper dbHelper=null;
SQLiteDatabase db = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
dbHelper = new DBHelper(context, "digitialMenu.db", null, 1);
db = dbHelper.getWritableDatabase();
cursor = db.rawQuery("select menuName,picture,description,price from menu",null);
menuList = new ArrayList<Menu>();
while(cursor.moveToNext()){
int menuid = cursor.getInt(0);
String menuName = cursor.getString(1);
String picture = cursor.getString(2);
String description = cursor.getString(3);
int price = cursor.getInt(4);
Menu menu = new Menu(menuid,menuName,picture,description,price);
menuList.add(menu);
}

listView = (ListView) findViewById(R.id.ListViewMenu);
listView.setAdapter(adapter);
Button AddOrder = (Button)findViewById(R.id.ButtonAddOrder);
AddOrder.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MenuActivity.this, OrderActivity.class);
startActivity(intent);
}
});
}

class MenuAdapter extends BaseAdapter {
@Override
public int getCount() {
return cursor.getCount();
}

@Override
public Object getItem(int position) {
return position;
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final int clickID = position;
View items= null;
LayoutInflater li=LayoutInflater.from(MenuActivity.this);
items=li.inflate(R.layout.activity_items,null);
final ImageButton picture = (ImageButton)items.findViewById(R.id.ImageButtonItem);
TextView menuName = (TextView)items.findViewById(R.id.TextViewItemName);
TextView price = (TextView)items.findViewById(R.id.TextViewItemPrice);
Button add = (Button)items.findViewById(R.id.ButtonItemAddOrder);

menuName.setText(menuList.get(position).getMenuName());
price.setText(menuList.get(position).getPrice());
picture.setImageDrawable(Drawable.createFromPath(menuList.get(position).getPicture()));
picture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageView img = new ImageView(context);
img.setImageResource(Integer.parseInt(menuList.get(clickID).getPicture()));
AlertDialog dialog = new AlertDialog.Builder(context).create();
dialog.setTitle("美食详情:");
dialog.setView(img);
dialog.setMessage(menuList.get(clickID).getDescription());
dialog.setButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
dialog.show();
}
});
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

}
});
return items;

}
}
}


package com.lcfuture.digitialmenu.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
* Created by lcfut on 2017/2/9.
*/

public class DBHelper extends SQLiteOpenHelper{
private static final String name="digitialMenu.db";
private static final int version =1;

public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, null, version);
}


@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table worker(workerid varchar(10) primary key, username varchar(10),password varchar(20),type integer);");
db.execSQL("insert into worker(workerID,username,password,type)values('wk01','admin','admin','1');");
db.execSQL("insert into worker(workerID,username,password,type)values('wk02','waiter','waiter','2');");
db.execSQL("insert into worker(workerID,username,password,type)values('wk03','chief','chief','3');");

db.execSQL("CREATE TABLE menu(menuID integer primary key autoincrement,menuName varchar(20),picture varchar(20),description varchar(50),price integer);");
db.execSQL("insert into menu(menuName,picture,description,price)values('干煸四季豆','gbsjd.jpg','时蔬四季豆','13');");
db.execSQL("insert into menu(menuName,picture,description,price)values('酸菜鱼','scy.jpg','热门酸菜鱼','30');");
db.execSQL("insert into menu(menuName,picture,description,price)values('毛血旺','mxw.jpg','招牌毛血旺','32');");
db.execSQL("insert into menu(menuName,picture,description,price)values('双味鱼头','swyt.jpg','特色双味鱼头','38');");
db.execSQL("insert into menu(menuName,picture,description,price)values('干锅包菜','ggbc.jpg','干锅包菜','15');");
db.execSQL("insert into menu(menuName,picture,description,price)values('有机花菜','yjhc.jpg','干锅有机花菜','16');");
db.execSQL("insert into menu(menuName,picture,description,price)values('苦瓜羹','kgg.jpg','汤品苦瓜羹','16');");
db.execSQL("insert into menu(menuName,picture,description,price)values('麻辣牛肉','mlnr.jpg','热菜麻辣牛肉','28');");
db.execSQL("insert into menu(menuName,picture,description,price)values('麻婆豆腐','mpdf.jpg','热菜麻婆豆腐','2');");
db.execSQL("insert into menu(menuName,picture,description,price)values('泡椒田鸡','pjtj','泡椒田鸡','43');");
db.execSQL("insert into menu(menuName,picture,description,price)values('飘香鱼','pxy.jpg','热菜飘香鱼','53');");
db.execSQL("insert into menu(menuName,picture,description,price)values('水煮活鱼','szhy.jpg','热门水煮活鱼','30');");

db.execSQL("CREATE TABLE ordertable(orderID integer primary key autoincrement, tablenum integer, ordertime varchar(20), state integer, notes varchar(20));");
db.execSQL("CREATE TABLE orderdetail(orderdetialid integer primary key autoincrement, orderid integer, menuid integer, tablenum integer, quantity integer, detailsate integer);");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS worker");
db.execSQL("DROP TABLE IF EXISTS menu");
db.execSQL("DROP TABLE IF EXISTS ordertable");
db.execSQL("DROP TABLE IF EXISTS orderdetail");
onCreate(db);
}
}

错误代码如下:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
at com.lcfuture.digitialmenu.MenuActivity.onCreate(MenuActivity.java:45)
at android.app.Activity.performCreate(Activity.java:6679)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 
at android.app.ActivityThread.-wrap12(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6119) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
硬是不知道怎么改啊
...全文
683 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
YXTS122 2017-10-30
  • 打赏
  • 举报
回复
package com.example.digitialmenus;


import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;


public class MainActivity extends Activity {
    private ListView listView;
    private Cursor cursor;
    DBHelper dbHelper;
    SQLiteDatabase db;
    List<Menuf> menuList;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       dbHelper = new DBHelper(this,"digitialMenu.db",null,1);
       menuList = new ArrayList<Menuf>();
       menuList = getListItems();
       listView = (ListView) findViewById(R.id.ListViewMenu);
       MenuAdapter adapter = new MenuAdapter(this, menuList);
       listView.setAdapter(adapter);
   }
    
   public List<Menuf> getListItems() {
       db= dbHelper.getWritableDatabase();
       cursor = db.rawQuery("select * from menu", null);
       List<Menuf> menuLists =new ArrayList<Menuf>();
       while(cursor.moveToNext()){
           int menuid= cursor.getColumnIndex("menuID");
           String menuName = cursor.getString(cursor.getColumnIndex("menuName"));
           String picture = cursor.getString(cursor.getColumnIndex("picture"));
           String description = cursor.getString(cursor.getColumnIndex("description"));
           int price = cursor.getColumnIndex("price");
           Menuf menu = new Menuf(menuid,menuName,picture,description,price);
           menuLists.add(menu);
       }
       return menuLists;
   }
  
   class MenuAdapter extends BaseAdapter {
       private Context context;
       private ArrayList<Menuf> menuList;
       private LayoutInflater listContainer;
  
       public MenuAdapter(Context context, List<Menuf> menuList) {
           this.context = context;
           listContainer=LayoutInflater.from(context);
           this.menuList = (ArrayList<Menuf>) menuList;
       }
  
       @Override
       public int getCount() {
           return cursor.getCount();
       }
  
       @Override
       public Object getItem(int position) {
           return position;
       }
  
       @Override
       public long getItemId(int position) {
           return position;
       }
  
       @Override
       public View getView(final int position, View convertView, ViewGroup parent) {
           final int clickID = position;
           View items=listContainer.inflate(R.layout.activity_items,null);
  
           final ImageButton picture = (ImageButton)items.findViewById(R.id.ImageButtonItem);
           TextView menuName = (TextView)items.findViewById(R.id.TextViewItemName);
           TextView price = (TextView)items.findViewById(R.id.TextViewItemPrice);
           Button add = (Button)items.findViewById(R.id.ButtonItemAddOrder);
  
           menuName.setText(menuList.get(position).getMenuName());
           price.setText(String.valueOf(menuList.get(position).getPrice()));
           picture.setImageDrawable(Drawable.createFromPath(menuList.get(clickID).getPicture()));
  
           picture.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View v) {
                   ImageView img = new ImageView(context);
                   //img.setImageResource(Integer.parseInt();
                   AlertDialog dialog = new AlertDialog.Builder(context).create();
                   dialog.setTitle("美食详情:");
                   dialog.setView(img);
                   dialog.setMessage(menuList.get(clickID).getDescription());
                   dialog.setButton("确定", new DialogInterface.OnClickListener() {
                       @Override
                       public void onClick(DialogInterface dialog, int which) {
                       }
                   });
                   dialog.show();
               }
           });
           add.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View v) {
  
               }
           });
           return items;
  
       }
   }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
  
LCOracle 2017-09-13
  • 打赏
  • 举报
回复
引用 5 楼 qq_28386435 的回复:
我也遇到了,怎么解决的??
今天才来翻这个,时间太久了忘了,毕业设计而已所以没多大在意
qq_28386435 2017-07-10
  • 打赏
  • 举报
回复
我也遇到了,怎么解决的??
LCOracle 2017-03-04
  • 打赏
  • 举报
回复
引用 3 楼 YXTS122 的回复:
楼主问题解决了么?????
自己解决了
YXTS122 2017-02-13
  • 打赏
  • 举报
回复
楼主问题解决了么?????
LCOracle 2017-02-12
  • 打赏
  • 举报
回复

package com.lcfuture.digitialmenu;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.lcfuture.digitialmenu.bean.Menu;
import com.lcfuture.digitialmenu.db.DBHelper;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by lcfut on 2017/2/9.
 */

public class MenuActivity extends AppCompatActivity {
    private ListView listView;
    private Cursor cursor;
    DBHelper dbHelper;
    SQLiteDatabase db;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu);

        List<Menu> menuList = getListItems();
        listView = (ListView) findViewById(R.id.ListViewMenu);
        MenuAdapter adapter = new MenuAdapter(this, menuList);
        listView.setAdapter(adapter);

        Button AddOrder = (Button)findViewById(R.id.ButtonAddOrder);
        AddOrder.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MenuActivity.this, OrderActivity.class);
                startActivity(intent);
            }
        });
    }

    public List<Menu> getListItems() {
        dbHelper = new DBHelper(this,"digitialMenu.db",null,1);
        db= dbHelper.getWritableDatabase();
        cursor = db.rawQuery("select * from menu", null);
        List<Menu> menuList = new ArrayList<Menu>();
        while(cursor.moveToNext()){
            int menuid= cursor.getColumnIndex("menuID");
            String menuName = cursor.getString(cursor.getColumnIndex("menuName"));
            String picture = cursor.getString(cursor.getColumnIndex("picture"));
            String description = cursor.getString(cursor.getColumnIndex("description"));
            int price = cursor.getColumnIndex("price");
            Menu menu = new Menu(menuid,menuName,picture,description,price);
            menuList.add(menu);
        }
        return menuList;
    }

    class MenuAdapter extends BaseAdapter {
        private Context context;
        private ArrayList<Menu> menuList;
        private LayoutInflater listContainer;

        public MenuAdapter(Context context, List<Menu> menuList) {
            this.context = context;
            listContainer=LayoutInflater.from(context);
            this.menuList = (ArrayList<Menu>) menuList;
        }

        @Override
        public int getCount() {
            return cursor.getCount();
        }

        @Override
        public Object getItem(int position) {
            return position;
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            final int clickID = position;
            View items=listContainer.inflate(R.layout.activity_items,null);

            final ImageButton picture = (ImageButton)items.findViewById(R.id.ImageButtonItem);
            TextView menuName = (TextView)items.findViewById(R.id.TextViewItemName);
            TextView price = (TextView)items.findViewById(R.id.TextViewItemPrice);
            Button add = (Button)items.findViewById(R.id.ButtonItemAddOrder);

            menuName.setText(menuList.get(position).getMenuName());
            price.setText(String.valueOf(menuList.get(position).getPrice()));
            picture.setImageDrawable(Drawable.createFromPath(menuList.get(clickID).getPicture()));

            picture.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    ImageView img = new ImageView(context);
                    //img.setImageResource(Integer.parseInt();
                    AlertDialog dialog = new AlertDialog.Builder(context).create();
                    dialog.setTitle("美食详情:");
                    dialog.setView(img);
                    dialog.setMessage(menuList.get(clickID).getDescription());
                    dialog.setButton("确定", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                        }
                    });
                    dialog.show();
                }
            });
            add.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                }
            });
            return items;

        }
    }
}
最新变成这样,但数据显示都是空的,但可以读到数据个数,这是什么情况,求大神啊
LCOracle 2017-02-11
  • 打赏
  • 举报
回复

package com.lcfuture.digitialmenu;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.lcfuture.digitialmenu.bean.Menu;
import com.lcfuture.digitialmenu.db.DBHelper;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by lcfut on 2017/2/9.
 */

public class MenuActivity extends AppCompatActivity {
    private ListView listView;
    private List<Menu> menuList;
    private Cursor cursor;
    MenuAdapter adapter;
    Context context;
    DBHelper dbHelper;
    SQLiteDatabase db;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu);
        dbHelper = new DBHelper(this,"digitialMenu.db",null,1);
        db= dbHelper.getWritableDatabase();
        cursor = db.rawQuery("select * from menu", null);
        menuList = new ArrayList<Menu>();
        while(cursor.moveToNext()){
            int menuid = cursor.getInt(0);
            String menuName = cursor.getString(1);
            String picture = cursor.getString(2);
            String description = cursor.getString(3);
            int price = cursor.getInt(4);
            Menu menu = new Menu(menuid,menuName,picture,description,price);
            menuList.add(menu);
        }

        listView = (ListView) findViewById(R.id.ListViewMenu);
        listView.setAdapter(adapter);
        Button AddOrder = (Button)findViewById(R.id.ButtonAddOrder);
        AddOrder.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MenuActivity.this, OrderActivity.class);
                startActivity(intent);
            }
        });
    }

    class MenuAdapter extends BaseAdapter {
        @Override
        public int getCount() {
            return cursor.getCount();
        }

        @Override
        public Object getItem(int position) {
            return position;
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            final int clickID = position;
            View items= null;
            LayoutInflater li=LayoutInflater.from(MenuActivity.this);
            items=li.inflate(R.layout.activity_items,null);
            final ImageButton picture = (ImageButton)items.findViewById(R.id.ImageButtonItem);
            TextView menuName = (TextView)items.findViewById(R.id.TextViewItemName);
            TextView price = (TextView)items.findViewById(R.id.TextViewItemPrice);
            Button add = (Button)items.findViewById(R.id.ButtonItemAddOrder);

            menuName.setText(menuList.get(position).getMenuName());
            price.setText(menuList.get(position).getPrice());
            picture.setImageDrawable(Drawable.createFromPath(menuList.get(position).getPicture()));
            picture.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    ImageView img = new ImageView(context);
                    img.setImageResource(Integer.parseInt(menuList.get(clickID).getPicture()));
                    AlertDialog dialog = new AlertDialog.Builder(context).create();
                    dialog.setTitle("美食详情:");
                    dialog.setView(img);
                    dialog.setMessage(menuList.get(clickID).getDescription());
                    dialog.setButton("确定", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                        }
                    });
                    dialog.show();
                }
            });
            add.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                }
            });
            return items;

        }
    }
}
现在换成这样倒是可以正常没报错,但死活没东西没数据显示,这是什么情况?

80,359

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧