Java SQLite:尝试重新打开已关闭的对象

Java SQLite:尝试重新打开已关闭的对象,java,android,sqlite,Java,Android,Sqlite,我有一个导航抽屉,当我选择第二个项目时,有时我会看到一些关于尝试重新打开已关闭对象的错误:SQLiteDatabase 我不知道如何解决这个问题 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final String[] fragments ={"حذف تمامی پیام ها",

我有一个导航抽屉,当我选择第二个项目时,有时我会看到一些关于尝试重新打开已关闭对象的错误:
SQLiteDatabase

我不知道如何解决这个问题

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final String[] fragments ={"حذف تمامی پیام ها","ذخیره تمامی پیام ها"};
    mDrawerLayout = (DrawerLayout) findViewById(R.id.main_drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.main_drawer);
    mDrawerList.setAdapter(new ArrayAdapter<String>(getActionBar().getThemedContext(),android.R.layout.simple_expandable_list_item_1, fragments));
    mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener(){
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            switch (position)
            {
                case 0:
                {
                    final SQLiteDatabase mydatabase = openOrCreateDatabase("CopyCollection", MODE_PRIVATE, null);
                    mydatabase.execSQL("DELETE FROM Details;");
                    mydatabase.close();
                    myBrowser.loadUrl("javascript:fill_comment()");
                    break;
                }
                case 1:
                {

                    final SQLiteDatabase mydatabase1 = openOrCreateDatabase("CopyCollection", MODE_PRIVATE, null);
                    Cursor crs = mydatabase1.rawQuery("SELECT * FROM Groups;",null);
                    String[] array = new String[crs.getCount()];
                    arrayID = new String[crs.getCount()];
                    Count = crs.getCount();
                    int i = 0;
                    while(crs.moveToNext()){
                        String uname = crs.getString(crs.getColumnIndex("GroupName"));
                        String num = crs.getString(crs.getColumnIndex("ID"));
                        arrayID[i] = num;
                        array[i] = uname;
                        i++;
                    }

                    final AlertDialog.Builder builder = new AlertDialog.Builder(AndroidHTMLActivity.this);
                    builder.setTitle("گروه خود را انتخاب کنید");
                    builder.setItems(array, new DialogInterface.OnClickListener()
                    {
                        public void onClick(final DialogInterface dialog, final int which)
                        {
                            if(which == 0)
                            {
                                if(Count == 4)
                                {
                                    Toast.makeText(getApplicationContext(),"نسخه رایگان",Toast.LENGTH_SHORT).show();
                                }
                                else if (Count < 4)
                                {
                                    myBrowser.loadUrl("javascript:getCheckedBox()");
                                    AlertDialog.Builder alert = new AlertDialog.Builder(AndroidHTMLActivity.this);
                                    alert.setTitle("گروه جدید");
                                    alert.setMessage("نام جدید را وارد کنید");
                                    final EditText input = new EditText(AndroidHTMLActivity.this);
                                    input.setInputType(1);
                                    alert.setView(input);
                                    alert.setPositiveButton("تایید", new DialogInterface.OnClickListener() {
                                        public void onClick(DialogInterface dialog, int whichButton) {
                                            m_Text = input.getText().toString();
                                            mydatabase1.execSQL("INSERT INTO Groups (GroupName) VALUES('" + m_Text + "');");
                                            Cursor c3 = mydatabase1.rawQuery("SELECT * FROM Groups ORDER BY ID DESC LIMIT 1;", null);
                                            while(c3.moveToNext()){
                                                int ID = c3.getInt(0);
                                                LastDir = String.valueOf(ID);
                                            }
                                            for(int i=0; i<ArraySize; i++)
                                            {
                                                Cursor CDetails = mydatabase1.rawQuery("SELECT * FROM Details WHERE ID = "+CheckBoxes[i]+" ;", null);
                                                if (CDetails.moveToFirst()) {
                                                    appName = CDetails.getString(1);
                                                    txtClip = CDetails.getString(2);
                                                    text_Date = CDetails.getString(3);
                                                }
                                                CDetails.close();
                                                if(i < 4)
                                                {
                                                    mydatabase1.execSQL("INSERT INTO MainContent(AppName,Txt,GroupID,Time)VALUES('" + appName + "','" + txtClip + "','" + LastDir + "','" + text_Date + "');");
                                                    mydatabase1.execSQL("DELETE FROM Details WHERE ID = " + CheckBoxes[i] + ";");
                                                    mydatabase1.close();
                                                }
                                                else
                                                {
                                                    Toast.makeText(getApplicationContext(),"نسخه رایگان",Toast.LENGTH_SHORT).show();
                                                    break;
                                                }
                                            }
                                        }
                                    });
                                    alert.setNegativeButton("انصراف", new DialogInterface.OnClickListener() {
                                        public void onClick(DialogInterface dialog, int whichButton) {
                                            myBrowser.post(new Runnable()
                                            {
                                                public void run()
                                                {
                                                    myBrowser.loadUrl("javascript:fill_comment()");
                                                }
                                            });
                                        }
                                    });
                                    alert.show();
                                }
                            }
                            else if(which > 0)
                            {

                            }
                        }
                    });
                    builder.show();
                    mydatabase1.close();
                }
            }
        }
    });
 }
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
最终字符串[]片段={“ž;
mDrawerLayout=(抽屉布局)findViewById(R.id.main\u抽屉布局);
mDrawerList=(ListView)findViewById(R.id.main\u抽屉);
mDrawerList.setAdapter(新的ArrayAdapter(getActionBar().getThemedContext(),android.R.layout.simple\u expandable\u list\u item\u 1,fragments));
mDrawerList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
开关(位置)
{
案例0:
{
最终SQLiteDatabase mydatabase=openOrCreateDatabase(“CopyCollection”,MODE_PRIVATE,null);
execSQL(“从详细信息中删除;”;
mydatabase.close();
loadUrl(“javascript:fill_comment()”);
打破
}
案例1:
{
最终SQLiteDatabase mydatabase1=openOrCreateDatabase(“CopyCollection”,MODE_PRIVATE,null);
游标crs=mydatabase1.rawQuery(“从组中选择*”,null);
String[]数组=新字符串[crs.getCount()];
arrayID=新字符串[crs.getCount()];
Count=crs.getCount();
int i=0;
while(crs.moveToNext()){
字符串uname=crs.getString(crs.getColumnIndex(“GroupName”);
String num=crs.getString(crs.getColumnIndex(“ID”);
arrayID[i]=num;
数组[i]=uname;
i++;
}
final AlertDialog.Builder=new AlertDialog.Builder(AndroidHTMLActivity.this);
建筑商名称(“建筑商名称”);
setItems(数组,新的DialogInterface.OnClickListener()
{
public void onClick(final DialogInterface dialog,final int which)
{
if(which==0)
{
如果(计数=4)
{
Toast.makeText(getApplicationContext(),“Toast.LENGTH”;“show()”;
}
否则如果(计数<4)
{
loadUrl(“javascript:getCheckedBox()”);
AlertDialog.Builder alert=新建AlertDialog.Builder(AndroidHTMLActivity.this);
警惕。设置标题(“گوهجدید”);
警报。设置消息(“警报”);
最终编辑文本输入=新编辑文本(AndroidHTMLActivity.this);
输入。设置输入类型(1);
alert.setView(输入);
alert.setPositiveButton(“تیید”,新的DialogInterface.OnClickListener(){
public void onClick(对话框接口对话框,int whichButton){
m_Text=input.getText().toString();
mydatabase1.execSQL(“插入到组(GroupName)值(““+m_Text+”);”);
游标c3=mydatabase1.rawQuery(“按ID描述从组顺序中选择*限制1;”,null);
while(c3.moveToNext()){
int ID=c3.getInt(0);
LastDir=String.valueOf(ID);
}
对于(int i=0;i 0)
{
}
}
});
builder.show();
mydatabase1.close();
}
}
}
});
}

在您的
案例1:

final SQLiteDatabase mydatabase1 = openOrCreateDatabase("CopyCollection", MODE_PRIVATE, null);
案例1
代码块的末尾关闭。因此,当单击对话框按钮时-

mydatabase1.execSQL("INSERT INTO Groups (GroupName) VALUES('" + m_Text + "');");
这里您得到了异常。
mydatabase1
已经关闭。您现在应该在此
onClick()

中获得一个新的ref。您可以写一个吗?这里的信息有点太多。限制问题:
SQLiteDatabase
。使用调试器检查它的打开(和关闭)位置,然后查看是否存在打开的db连接。如果是,您可能需要重新排序代码。