Java RuntimeException-由以下原因引起:android.database.sqlite.SQLiteException:没有这样的表:tbl(代码1)
我的数据库有一个名为“tbl”的表,但错误显示:未找到表“tbl” DataBase.java=>如下所示Java RuntimeException-由以下原因引起:android.database.sqlite.SQLiteException:没有这样的表:tbl(代码1),java,android,sqlite,runtimeexception,Java,Android,Sqlite,Runtimeexception,我的数据库有一个名为“tbl”的表,但错误显示:未找到表“tbl” DataBase.java=>如下所示 public class DataBase extends SQLiteOpenHelper { private Context context; public DataBase(@Nullable Context context) { super(context, info_db.Data_Name, null, info_db.DataBase_Ver
public class DataBase extends SQLiteOpenHelper {
private Context context;
public DataBase(@Nullable Context context) {
super(context, info_db.Data_Name, null, info_db.DataBase_Version);
this.context = context;
IsDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
private void IsDatabase() {
File check = new File(info_db.Package);
if (!check.exists()) {
check.mkdir();
}
check = context.getDatabasePath(info_db.Data_Name);
if (!check.exists()) {
try {
copyDataBase();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void copyDataBase() throws IOException {
InputStream myInput = context.getAssets().open(info_db.DataBase_Source);
String outFileName = info_db.Package + info_db.DataBase_Name;
OutputStream myOutput = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
}
public List<info_Data> fetchmaindata() {
SQLiteDatabase db = this.getReadableDatabase();
List<info_Data> data = new ArrayList<>();
String query ="SELECT "+info_db.Data_Name+","+info_db.Data_Body+","+info_db.Data_Fav+","+info_db.Data_Image+" FROM "+info_db.Table_Name;
Cursor cursor = db.rawQuery(query,null);
if (cursor.moveToFirst()){
do {
info_Data info = new info_Data();
info.setName(cursor.getString(cursor.getColumnIndex(info_db.Data_Name)));
info.setBody(cursor.getString(cursor.getColumnIndex(info_db.Data_Body)));
info.setFav(cursor.getInt(cursor.getColumnIndex(info_db.Data_Fav)));
info.setImage(cursor.getString(cursor.getColumnIndex(info_db.Data_Image)));
data.add(info);
}while (cursor.moveToNext());
}
cursor.close();
db.close();
return data;
}
}
public class FragMain extends Fragment {
public FragMain() {
// Required empty public constructor
}
private RecyclerView recyclerView;
private AdapterMain adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
DataBase db = new DataBase(getActivity());
List<info_Data> data = db.fetchmaindata();
db.close();
View view = inflater.inflate(R.layout.fragment_frag_main, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.main_re);
adapter = new AdapterMain(getActivity(), postdata(data));
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
return view;
}
private List<info> postdata(List<info_Data> db) {
List<info> data = new ArrayList<>();
//String name[] = {"بخش هشتم", "بخش هفتم", "بخش ششم", "بخش پنجم", "بخش چهارم", "بخش سوم", "بخش دوم"};
//int pic[] = {R.drawable.img, R.drawable.img, R.drawable.img, R.drawable.img, R.drawable.img, R.drawable.img, R.drawable.img};
for (int i = 0; i < db.size(); i++) {
info cur = new info();
cur.title = db.get(i).getName();
String uri ="@drawable/"+db.get(i).getImage();
int iconid = getResources().getIdentifier(uri, null, getActivity().getPackageName());
cur.iconid = iconid;
cur.body = db.get(i).getBody();
data.add(cur);
}
return data;
}
}
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.af.sawalebast/com.af.sawalebast.MainActivity}: android.view.InflateException: Binary XML file line #26: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2327)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)
at android.app.ActivityThread.access$800(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5293)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: android.view.InflateException: Binary XML file line #26: Error inflating class fragment
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
at com.af.sawalebast.MainActivity.onCreate(MainActivity.java:19)
at android.app.Activity.performCreate(Activity.java:5990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2280)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)
at android.app.ActivityThread.access$800(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5293)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: android.database.sqlite.SQLiteException: no such table: tbl (code 1): , while compiling: SELECT name,body,fav,image FROM tbl
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1255)
**at com.af.sawalebast.DataBase.fetchmaindata(DataBase.java:74)
at com.af.sawalebast.FragMain.onCreateView(FragMain.java:33)**
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2600)
at androidx.fragment.app.FragmentManagerImpl.ensureInflatedFragmentView(FragmentManagerImpl.java:1138)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:851)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1133)
at androidx.fragment.app.FragmentManagerImpl.addFragment(FragmentManagerImpl.java:1393)
at androidx.fragment.app.FragmentManagerImpl.onCreateView(FragmentManagerImpl.java:3205)
at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:134)
at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:357)
at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:336)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
at com.af.sawalebast.MainActivity.onCreate(MainActivity.java:19)
at android.app.Activity.performCreate(Activity.java:5990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2280)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)
at android.app.ActivityThread.access$800(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5293)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
公共类数据库扩展SQLiteOpenHelper{
私人语境;
公共数据库(@Nullable Context){
super(上下文,info\u db.Data\u名称,null,info\u db.DataBase\u版本);
this.context=上下文;
IsDatabase();
}
@凌驾
public void onCreate(SQLiteDatabase db){
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
}
专用数据库(){
文件检查=新文件(info_db.Package);
如果(!check.exists()){
check.mkdir();
}
check=context.getDatabasePath(info\u db.Data\u Name);
如果(!check.exists()){
试一试{
copyDataBase();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
私有void copyDataBase()引发IOException{
InputStream myInput=context.getAssets().open(info\u db.DataBase\u Source);
字符串outFileName=info_db.Package+info_db.DataBase_Name;
OutputStream myOutput=新文件OutputStream(outFileName);
字节[]缓冲区=新字节[1024];
整数长度;
而((长度=myInput.read(缓冲区))>0){
写入(缓冲区,0,长度);
}
myOutput.flush();
myOutput.close();
myInput.close();
}
公共列表fetchmaindata(){
SQLiteDatabase db=this.getReadableDatabase();
列表数据=新的ArrayList();
String query=“从”+info\u db.Table\u Name中选择“+info\u db.Data\u Body+”、“+info\u db.Data\u Fav+”、“+info\u db.Data\u Image+”;
Cursor Cursor=db.rawQuery(查询,空);
if(cursor.moveToFirst()){
做{
信息数据信息=新信息数据();
info.setName(cursor.getString(cursor.getColumnIndex(info\u db.Data\u Name));
info.setBody(cursor.getString(cursor.getColumnIndex(info_db.Data_Body));
info.setFav(cursor.getInt(cursor.getColumnIndex(info\u db.Data\u Fav));
info.setImage(cursor.getString(cursor.getColumnIndex(info\u db.Data\u Image));
数据。添加(信息);
}while(cursor.moveToNext());
}
cursor.close();
db.close();
返回数据;
}
}
FragMain.java=>如下所示
public class DataBase extends SQLiteOpenHelper {
private Context context;
public DataBase(@Nullable Context context) {
super(context, info_db.Data_Name, null, info_db.DataBase_Version);
this.context = context;
IsDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
private void IsDatabase() {
File check = new File(info_db.Package);
if (!check.exists()) {
check.mkdir();
}
check = context.getDatabasePath(info_db.Data_Name);
if (!check.exists()) {
try {
copyDataBase();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void copyDataBase() throws IOException {
InputStream myInput = context.getAssets().open(info_db.DataBase_Source);
String outFileName = info_db.Package + info_db.DataBase_Name;
OutputStream myOutput = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
}
public List<info_Data> fetchmaindata() {
SQLiteDatabase db = this.getReadableDatabase();
List<info_Data> data = new ArrayList<>();
String query ="SELECT "+info_db.Data_Name+","+info_db.Data_Body+","+info_db.Data_Fav+","+info_db.Data_Image+" FROM "+info_db.Table_Name;
Cursor cursor = db.rawQuery(query,null);
if (cursor.moveToFirst()){
do {
info_Data info = new info_Data();
info.setName(cursor.getString(cursor.getColumnIndex(info_db.Data_Name)));
info.setBody(cursor.getString(cursor.getColumnIndex(info_db.Data_Body)));
info.setFav(cursor.getInt(cursor.getColumnIndex(info_db.Data_Fav)));
info.setImage(cursor.getString(cursor.getColumnIndex(info_db.Data_Image)));
data.add(info);
}while (cursor.moveToNext());
}
cursor.close();
db.close();
return data;
}
}
public class FragMain extends Fragment {
public FragMain() {
// Required empty public constructor
}
private RecyclerView recyclerView;
private AdapterMain adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
DataBase db = new DataBase(getActivity());
List<info_Data> data = db.fetchmaindata();
db.close();
View view = inflater.inflate(R.layout.fragment_frag_main, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.main_re);
adapter = new AdapterMain(getActivity(), postdata(data));
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
return view;
}
private List<info> postdata(List<info_Data> db) {
List<info> data = new ArrayList<>();
//String name[] = {"بخش هشتم", "بخش هفتم", "بخش ششم", "بخش پنجم", "بخش چهارم", "بخش سوم", "بخش دوم"};
//int pic[] = {R.drawable.img, R.drawable.img, R.drawable.img, R.drawable.img, R.drawable.img, R.drawable.img, R.drawable.img};
for (int i = 0; i < db.size(); i++) {
info cur = new info();
cur.title = db.get(i).getName();
String uri ="@drawable/"+db.get(i).getImage();
int iconid = getResources().getIdentifier(uri, null, getActivity().getPackageName());
cur.iconid = iconid;
cur.body = db.get(i).getBody();
data.add(cur);
}
return data;
}
}
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.af.sawalebast/com.af.sawalebast.MainActivity}: android.view.InflateException: Binary XML file line #26: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2327)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)
at android.app.ActivityThread.access$800(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5293)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: android.view.InflateException: Binary XML file line #26: Error inflating class fragment
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
at com.af.sawalebast.MainActivity.onCreate(MainActivity.java:19)
at android.app.Activity.performCreate(Activity.java:5990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2280)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)
at android.app.ActivityThread.access$800(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5293)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: android.database.sqlite.SQLiteException: no such table: tbl (code 1): , while compiling: SELECT name,body,fav,image FROM tbl
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1255)
**at com.af.sawalebast.DataBase.fetchmaindata(DataBase.java:74)
at com.af.sawalebast.FragMain.onCreateView(FragMain.java:33)**
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2600)
at androidx.fragment.app.FragmentManagerImpl.ensureInflatedFragmentView(FragmentManagerImpl.java:1138)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:851)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1133)
at androidx.fragment.app.FragmentManagerImpl.addFragment(FragmentManagerImpl.java:1393)
at androidx.fragment.app.FragmentManagerImpl.onCreateView(FragmentManagerImpl.java:3205)
at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:134)
at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:357)
at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:336)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
at com.af.sawalebast.MainActivity.onCreate(MainActivity.java:19)
at android.app.Activity.performCreate(Activity.java:5990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2280)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)
at android.app.ActivityThread.access$800(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5293)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
公共类FragMain扩展片段{
公共FragMain(){
//必需的空公共构造函数
}
私人回收站;
专用适配器主适配器;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
DataBase db=新数据库(getActivity());
List data=db.fetchmaindata();
db.close();
视图=充气机。充气(右布局。碎片/碎片/主容器,假);
recyclerView=(recyclerView)view.findViewById(R.id.main\u re);
adapter=newadapterMain(getActivity(),postdata(data));
recyclerView.setAdapter(适配器);
setLayoutManager(新的LinearLayoutManager(getActivity());
返回视图;
}
私有列表postdata(列表数据库){
列表数据=新的ArrayList();
//本月15日,本月15日,本月15日,本月15日,本月15日,本月15日,本月15日,本月15日,本月15日,本月15日日,本月15日,本月15日,本月15日,本月15日,本月18日,本月15日,本月15日,本月15日,本月15日,本月15日,本本月15日,本月15日,本月15日,本月15日,本月15日,本月15日,本月15日,本月15日,本月15日,本月15日,本月15日,本月15日,本月15日,若若若若若若若若在本月15日,本月15日,本月15日,本月15日,本月15日,本月15日,本月15日,本月15日,本本月15日,本月15日,本月15日,各各各各各各各各各وم“};
//int pic[]={R.drawable.img,R.drawable.img,R.drawable.img,R.drawable.img,R.drawable.img,R.drawable.img,R.drawable.img};
对于(int i=0;i
logcat=>中的错误如下所示
public class DataBase extends SQLiteOpenHelper {
private Context context;
public DataBase(@Nullable Context context) {
super(context, info_db.Data_Name, null, info_db.DataBase_Version);
this.context = context;
IsDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
private void IsDatabase() {
File check = new File(info_db.Package);
if (!check.exists()) {
check.mkdir();
}
check = context.getDatabasePath(info_db.Data_Name);
if (!check.exists()) {
try {
copyDataBase();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void copyDataBase() throws IOException {
InputStream myInput = context.getAssets().open(info_db.DataBase_Source);
String outFileName = info_db.Package + info_db.DataBase_Name;
OutputStream myOutput = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
}
public List<info_Data> fetchmaindata() {
SQLiteDatabase db = this.getReadableDatabase();
List<info_Data> data = new ArrayList<>();
String query ="SELECT "+info_db.Data_Name+","+info_db.Data_Body+","+info_db.Data_Fav+","+info_db.Data_Image+" FROM "+info_db.Table_Name;
Cursor cursor = db.rawQuery(query,null);
if (cursor.moveToFirst()){
do {
info_Data info = new info_Data();
info.setName(cursor.getString(cursor.getColumnIndex(info_db.Data_Name)));
info.setBody(cursor.getString(cursor.getColumnIndex(info_db.Data_Body)));
info.setFav(cursor.getInt(cursor.getColumnIndex(info_db.Data_Fav)));
info.setImage(cursor.getString(cursor.getColumnIndex(info_db.Data_Image)));
data.add(info);
}while (cursor.moveToNext());
}
cursor.close();
db.close();
return data;
}
}
public class FragMain extends Fragment {
public FragMain() {
// Required empty public constructor
}
private RecyclerView recyclerView;
private AdapterMain adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
DataBase db = new DataBase(getActivity());
List<info_Data> data = db.fetchmaindata();
db.close();
View view = inflater.inflate(R.layout.fragment_frag_main, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.main_re);
adapter = new AdapterMain(getActivity(), postdata(data));
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
return view;
}
private List<info> postdata(List<info_Data> db) {
List<info> data = new ArrayList<>();
//String name[] = {"بخش هشتم", "بخش هفتم", "بخش ششم", "بخش پنجم", "بخش چهارم", "بخش سوم", "بخش دوم"};
//int pic[] = {R.drawable.img, R.drawable.img, R.drawable.img, R.drawable.img, R.drawable.img, R.drawable.img, R.drawable.img};
for (int i = 0; i < db.size(); i++) {
info cur = new info();
cur.title = db.get(i).getName();
String uri ="@drawable/"+db.get(i).getImage();
int iconid = getResources().getIdentifier(uri, null, getActivity().getPackageName());
cur.iconid = iconid;
cur.body = db.get(i).getBody();
data.add(cur);
}
return data;
}
}
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.af.sawalebast/com.af.sawalebast.MainActivity}: android.view.InflateException: Binary XML file line #26: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2327)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)
at android.app.ActivityThread.access$800(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5293)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: android.view.InflateException: Binary XML file line #26: Error inflating class fragment
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
at com.af.sawalebast.MainActivity.onCreate(MainActivity.java:19)
at android.app.Activity.performCreate(Activity.java:5990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2280)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)
at android.app.ActivityThread.access$800(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5293)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: android.database.sqlite.SQLiteException: no such table: tbl (code 1): , while compiling: SELECT name,body,fav,image FROM tbl
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1255)
**at com.af.sawalebast.DataBase.fetchmaindata(DataBase.java:74)
at com.af.sawalebast.FragMain.onCreateView(FragMain.java:33)**
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2600)
at androidx.fragment.app.FragmentManagerImpl.ensureInflatedFragmentView(FragmentManagerImpl.java:1138)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:851)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1133)
at androidx.fragment.app.FragmentManagerImpl.addFragment(FragmentManagerImpl.java:1393)
at androidx.fragment.app.FragmentManagerImpl.onCreateView(FragmentManagerImpl.java:3205)
at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:134)
at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:357)
at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:336)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
at com.af.sawalebast.MainActivity.onCreate(MainActivity.java:19)
at android.app.Activity.performCreate(Activity.java:5990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2280)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)
at android.app.ActivityThread.access$800(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5293)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
java.lang.RuntimeException:无法启动活动组件信息{com.af.sawalebast/com.af.sawalebast.MainActivity}:android.view.InflateException:二进制XML文件行#26:膨胀类片段时出错
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2327)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)
在android.app.ActivityThread.access$800(ActivityThread.java:153)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:135)
位于android.app.ActivityThread.main(ActivityThread.java:5293)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
原因:android.view.InflateException:二进制XML文件行#26:膨胀类片段时出错
位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763)
位于android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
位于android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
位于android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
在android.view.LayoutInflater.充气(LayoutInflater.java:504)
在android.view.LayoutInflater.inflate(LayoutInflater.java:414)
在android.view.LayoutInflater.充气(LayoutInflater.java:365)
位于androidx.appcompat.app.appcompatedelegateimpl.setContentView(appcompatedelegateimpl.java:555)
在androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)中