Java Android错误[尝试调用布尔虚拟方法';void DatabaseHelper.Insert()';';对空对象引用]
我有两个类,我正试图通过我创建的getter和setter将我在其他类中的值传递到db中,但是我得到了异常,我的应用程序在我单击“保存”按钮时崩溃。请有人查看一下。已经三天了,我似乎无法解决它。谢谢 以下是我的两门课:Java Android错误[尝试调用布尔虚拟方法';void DatabaseHelper.Insert()';';对空对象引用],java,android,database,sqlite,import,Java,Android,Database,Sqlite,Import,我有两个类,我正试图通过我创建的getter和setter将我在其他类中的值传递到db中,但是我得到了异常,我的应用程序在我单击“保存”按钮时崩溃。请有人查看一下。已经三天了,我似乎无法解决它。谢谢 以下是我的两门课: /** * Created by Sanya on 11/22/2015. */ public class User_overlay_save extends Activity implements View.OnClickListene
/**
* Created by Sanya on 11/22/2015.
*/
public class User_overlay_save extends Activity implements View.OnClickListener
{
private static int RESULT_LOAD_IMAGE = 1;
private static int RESULT_LOAD_VIDEO = 2;
private int position = 0;
private SQLiteDatabase db; DatabaseHelper helper;
File myapp;
private MediaController mediaControls;
Button save_button;
ImageButton vid_button,img_button;
EditText name_overlay;
TextView real_Imgpath, real_Vidpath;
protected void onCreate(Bundle savedInstanceState){
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.user_overlay_save);
save_button=(Button)findViewById(R.id.save_Ouser);
img_button=(ImageButton)findViewById(R.id.img_button);
vid_button=(ImageButton)findViewById(R.id.vid_button);
real_Imgpath =(TextView)findViewById(R.id.real_Imgpath);
real_Vidpath =(TextView)findViewById(R.id.real_Vidpath);
name_overlay=(EditText)findViewById(R.id.name_overlay);
save_button.setOnClickListener(this);
img_button.setOnClickListener(this);
vid_button.setOnClickListener(this);
name_overlay.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.save_Ouser:
{
boolean result= helper.Insert();
if(result==true)
{
Toast.makeText(getApplicationContext(), "saved..in DB..!!!",
Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getApplicationContext(), "ERROR--the path could not b saved..!!",
Toast.LENGTH_LONG).show();
}
}
break;
case R.id.img_button:
Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE);
break;
case R.id.vid_button:
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, RESULT_LOAD_VIDEO);
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
String realPath;
//FOR IMAGE PATH SAVING
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
String selectedImagePath;
Uri selectedImageUri = data.getData();
//媒体画廊
selectedImagePath = ImageFilePath.getPath(getApplicationContext(), selectedImageUri);
Log.i("Image-->File Path-->", " " + selectedImagePath);
setImgTextViews(Build.VERSION.SDK_INT, selectedImagePath);
SET_saveImg(selectedImagePath);
}
else if(Build.VERSION.SDK_INT < 19)
{
realPath = this.getRealPathFromURI_FromAPI11_18(this, data.getData());
setImgTextViews(Build.VERSION.SDK_INT, realPath);
}
//----------->>>>>>>>>>>---------->>>>FOR VIDEO PATH SAVING------>>>>>>------------>>>>>>>>>>>-------->>>>>>>>>---------->>>>
if (requestCode == RESULT_LOAD_VIDEO && resultCode == RESULT_OK && null != data)
{
//FOR VIDEO PATH SAVING
String selectedVidPath;
Uri selectedVidUri = data.getData();
//VIDEO____PLAY___LIST
selectedVidPath = ImageFilePath.getPath(getApplicationContext(), selectedVidUri);
Log.i("VIDEO-->File Path-->", "" + selectedVidPath);
setVIDTextViews(Build.VERSION.SDK_INT, selectedVidPath);
SET_saveVid(selectedVidPath);
}
}
public String getRealPathFromURI_FromAPI11_18(Context context, Uri contentUri)
{
String[] proj = { MediaStore.Images.Media.DATA };
String result = null;
CursorLoader cursorLoader = new CursorLoader(context, contentUri, proj, null, null, null);
Cursor cursor = cursorLoader.loadInBackground();
if(cursor != null){
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
result = cursor.getString(column_index);
}
return result;
}
protected void setImgTextViews(int sdk,String realPath){
this.real_Imgpath.setText
("CURRENT VERSION--SDK-->"+sdk+"Real Path: "+realPath);
}
protected void setVIDTextViews(int sdk,String realPath)
{
this.real_Vidpath.setText
("CURRENT VERSION--SDK-->"+sdk+"Real Path: "+realPath);
}
//---->>------>>>------->>>>SETTERS--FOR IMAGE-->SET_saveImg(selectedImagePath) For &VIDEO -->>SET_saveVid(selectedVidPath)--->>AND--->>GETTERS FOR IMAGE AND VIDEO--------->>>>>
String realPath; String vidPath;
public String GET_saveImg()//IS CALLED FROM DATABASE_HELPER CLASS TO PROVIDE THE SETTER VALUES
{
return realPath;
}
protected void SET_saveImg(String realPath)
{
this.realPath=realPath;
}
protected String GET_saveVid()
{
return vidPath;
}
protected void SET_saveVid(String vidPath)
{
this.vidPath= vidPath;
}}
您的DatabaseHelper对象助手是
null
。因为您刚刚声明了它,没有定义任何地方
puthelper=newdatabasehelper(如果有任何参数)代码>
在“保存”按钮上设置onClickListener之前,在内部创建
protected void onCreate(Bundle savedInstanceState){
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.user_overlay_save);
...........................
helper = new DatabaseHelper();
save_button.setOnClickListener(this);
..................
}
谢谢你的回复,我试过了,但现在它给出了sqlite E/ActivityThread的例外:com.android.internal.os.ZygoteInit.main(ZygoteInit.java:740)11-24 22:55:40.905 15416-15416/com.example.sana.ar_expeditor E/SQLiteLog:(1)表映像没有名为image SQLiteDatabase的列:错误插入image=null file=nullSQLiteDatabase:android.database.sqlite.SQLiteException:表映像没有名为image的列(代码1):,编译时:插入到映像(映像,文件)值(?),请参阅并感谢您的帮助,它解决了所需的问题:)
protected void onCreate(Bundle savedInstanceState){
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.user_overlay_save);
...........................
helper = new DatabaseHelper();
save_button.setOnClickListener(this);
..................
}