[帮助]致命异常:main java.lang.NullPointerException 公共类MainActivity扩展活动{ 私有静态最终字符串TAG=“MainActivity”; ProductDatabase.ProductDatabaseHe
[帮助]致命异常:main java.lang.NullPointerException[帮助]致命异常:main java.lang.NullPointerException 公共类MainActivity扩展活动{ 私有静态最终字符串TAG=“MainActivity”; ProductDatabase.ProductDatabaseHe,java,android,exception,nullpointerexception,main,Java,Android,Exception,Nullpointerexception,Main,[帮助]致命异常:main java.lang.NullPointerException 公共类MainActivity扩展活动{ 私有静态最终字符串TAG=“MainActivity”; ProductDatabase.ProductDatabaseHelper控制器=新建ProductDatabase.ProductDatabaseHelper(此); 编辑文本mBarcodeEdit; 编辑文本格式; 编辑文本mTitleEdit; 编辑文本文件; 专用静态最终int ZBAR_扫描器_请
公共类MainActivity扩展活动{
私有静态最终字符串TAG=“MainActivity”;
ProductDatabase.ProductDatabaseHelper控制器=新建ProductDatabase.ProductDatabaseHelper(此);
编辑文本mBarcodeEdit;
编辑文本格式;
编辑文本mTitleEdit;
编辑文本文件;
专用静态最终int ZBAR_扫描器_请求=0;
专用静态最终int ZBAR\u QR\u扫描仪\u请求=1;
私有静态最终ProductData MPProductData=new ProductData();
按钮mScanButton;
按钮制作按钮;
按钮选择按钮;
按钮mExportButton;
按钮btnimport;
产品数据库;
ListView ls;
文本视图信息文本;
File=null;
//DatabaseHelper dbhelper=null;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ls=(ListView)findViewById(R.id.placeslist);
mBarcodeEdit=(EditText)findViewById(R.id.barcodeEdit);
mFormatEdit=(EditText)findViewById(R.id.codeFormatEdit);
mTitleEdit=(EditText)findViewById(R.id.titleEdit);
mPriceEdit=(EditText)findViewById(R.id.priceEdit);
mScanButton=(按钮)findViewById(R.id.scan\u btn);
mAddButton=(按钮)findViewById(R.id.addButton);
mSelectButton=(按钮)findViewById(R.id.selectButton);
MPProductDB=new ProductDatabase(this);//尚未显示
infotext=(TextView)findViewById(R.id.txtresulttext);
mExportButton=(按钮)findViewById(R.id.exportbtn);
mSelectButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意向i=新意向(MainActivity.this,product_list.class);
星触觉(i);
}
});
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
字符串条形码=mBarcodeEdit.getText().toString();
字符串格式=mFormatEdit.getText().toString();
字符串title=mtitledit.getText().toString();
字符串price=mPriceEdit.getText().toString();
字符串错误=验证字段(条形码、格式、标题、价格);
if(errors.length()>0){
showInfoDialog(MainActivity.this,“请修复错误”,错误);
}否则{
MPProductData.barcode=条形码;
MPProductData.format=格式;
mpProductData.title=标题;
MPProductData.price=新的BigDecimal(价格);
插入(MPProductData);
showInfoDialog(MainActivity.this,“成功”,“产品已成功保存”);
resetForm();
}
}
});
mExportButton.setOnClickListener(新视图.OnClickListener(){
SQLiteDatabase sqldb=controller.getReadableDatabase();//我的数据库类
光标c=null;
@凌驾
public void onClick(视图){//主代码从这里开始
试一试{
c=sqldb.rawQuery(“从spot_pay.db中选择*”,空);
int rowcount=0;
int colcount=0;
文件sdCardDir=Environment.getExternalStorageDirectory();
字符串filename=“MyBackUp.csv”;
//要导出的文件的名称
File saveFile=新文件(sdCardDir,文件名);
FileWriter fw=新的FileWriter(保存文件);
BufferedWriter bw=新的BufferedWriter(fw);
rowcount=c.getCount();
colcount=c.getColumnCount();
如果(行计数>0){
c、 moveToFirst();
for(int i=0;ipublic class MainActivity extends Activity {
private static final String TAG = "MainActivity";
ProductDatabase.ProductDatabaseHelper controller = new ProductDatabase.ProductDatabaseHelper(this);
EditText mBarcodeEdit;
EditText mFormatEdit;
EditText mTitleEdit;
EditText mPriceEdit;
private static final int ZBAR_SCANNER_REQUEST = 0;
private static final int ZBAR_QR_SCANNER_REQUEST = 1;
private static final ProductData mProductData = new ProductData();
Button mScanButton;
Button mAddButton;
Button mSelectButton;
Button mExportButton;
Button btnimport;
ProductDatabase mProductDb;
ListView ls;
TextView infotext;
File file = null;
// DatabaseHelper dbhelper = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ls = (ListView) findViewById(R.id.placeslist);
mBarcodeEdit = (EditText) findViewById(R.id.barcodeEdit);
mFormatEdit = (EditText) findViewById(R.id.codeFormatEdit);
mTitleEdit = (EditText) findViewById(R.id.titleEdit);
mPriceEdit = (EditText) findViewById(R.id.priceEdit);
mScanButton = (Button) findViewById(R.id.scan_btn);
mAddButton = (Button) findViewById(R.id.addButton);
mSelectButton = (Button) findViewById(R.id.selelctButton);
mProductDb = new ProductDatabase(this); // not yet shown
infotext = (TextView) findViewById(R.id.txtresulttext);
mExportButton = (Button) findViewById(R.id.exportbtn);
mSelectButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, product_list.class);
startActivity(i);
}
});
mAddButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String barcode = mBarcodeEdit.getText().toString();
String format = mFormatEdit.getText().toString();
String title = mTitleEdit.getText().toString();
String price = mPriceEdit.getText().toString();
String errors = validateFields(barcode, format, title, price);
if (errors.length() > 0) {
showInfoDialog(MainActivity.this, "Please fix errors", errors);
} else {
mProductData.barcode = barcode;
mProductData.format = format;
mProductData.title = title;
mProductData.price = new BigDecimal(price);
mProductDb.insert(mProductData);
showInfoDialog(MainActivity.this, "Success", "Product saved successfully");
resetForm();
}
}
});
mExportButton.setOnClickListener(new View.OnClickListener() {
SQLiteDatabase sqldb = controller.getReadableDatabase(); //My Database class
Cursor c =null;
@Override
public void onClick(View view) { //main code begins here
try {
c = sqldb.rawQuery("select * from spot_pay.db", null);
int rowcount = 0;
int colcount = 0;
File sdCardDir = Environment.getExternalStorageDirectory();
String filename = "MyBackUp.csv";
// the name of the file to export with
File saveFile = new File(sdCardDir, filename);
FileWriter fw = new FileWriter(saveFile);
BufferedWriter bw = new BufferedWriter(fw);
rowcount = c.getCount();
colcount = c.getColumnCount();
if (rowcount > 0) {
c.moveToFirst();
for (int i = 0; i < colcount; i++) {
if (i != colcount - 1) {
bw.write(c.getColumnName(i) + ",");
} else {
bw.write(c.getColumnName(i));
}
}
bw.newLine();
for (int i = 0; i < rowcount; i++) {
c.moveToPosition(i);
for (int j = 0; j < colcount; j++) {
if (j != colcount - 1)
bw.write(c.getString(j) + ",");
else
bw.write(c.getString(j));
}
bw.newLine();
}
bw.flush();
infotext.setText("Exported Successfully.");
}
} catch (Exception ex) {
if (sqldb.isOpen()) {
sqldb.close();
infotext.setText(ex.getMessage().toString());
}
} finally {
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
private void showInfoDialog(Context context, String title, String information) {
new AlertDialog.Builder(context)
.setMessage(information)
.setTitle(title)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).show();
}
private void resetForm() {
// TODO Auto-generated method stub
mBarcodeEdit.getText().clear();
mFormatEdit.getText().clear();
mTitleEdit.getText().clear();
mPriceEdit.getText().clear();
}
public void launchScanner(View v) {
if (isCameraAvailable()) {
Intent intent = new Intent(this, ZBarScannerActivity.class);
startActivityForResult(intent, ZBAR_SCANNER_REQUEST);
} else {
Toast.makeText(this, "Rear Facing Camera Unavailable", Toast.LENGTH_SHORT).show();
}
}
public void launchQRScanner(View v) {
if (isCameraAvailable()) {
Intent intent = new Intent(this, ZBarScannerActivity.class);
intent.putExtra(ZBarConstants.SCAN_MODES, new int[]{Symbol.QRCODE});
startActivityForResult(intent, ZBAR_SCANNER_REQUEST);
} else {
Toast.makeText(this, "Rear Facing Camera Unavailable", Toast.LENGTH_SHORT).show();
}
}
public boolean isCameraAvailable() {
PackageManager pm = getPackageManager();
return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case ZBAR_SCANNER_REQUEST:
case ZBAR_QR_SCANNER_REQUEST:
if (resultCode == RESULT_OK) {
mBarcodeEdit.setText(data.getStringExtra(ZBarConstants.SCAN_RESULT));
// Toast.makeText(this, "Scan Result = " + data.getStringExtra(ZBarConstants.SCAN_RESULT), Toast.LENGTH_SHORT).show();
} else if (resultCode == RESULT_CANCELED && data != null) {
String error = data.getStringExtra(ZBarConstants.ERROR_INFO);
if (!TextUtils.isEmpty(error)) {
Toast.makeText(this, error, Toast.LENGTH_SHORT).show();
}
}
break;
}
}
private static String validateFields(String barcode, String format,
String title, String price) {
StringBuilder errors = new StringBuilder();
if (barcode.matches("^\\s*$")) {
errors.append("Barcode required\n");
}
if (format.matches("^\\s*$")) {
errors.append("Format required\n");
}
if (title.matches("^\\s*$")) {
errors.append("Title required\n");
}
if (!price.matches("^-?\\d+(.\\d+)?$")) {
errors.append("Need numeric price\n");
}
return errors.toString();
}
}