سلام خسته نباشید
ممنون از شما برای این آموزش
بعد جلسه ساخت آداپتور برای ریسایکلر ویو موقع اجرای روی سیمولیتور و گوشی به محض اینکه میخواد وارد MainActivity بشه از برنامه خارج میشه !
تمام دوجلسه آخر رو من دوباز کدهارو چک کردم هیچ خطایی نبود
لطفا راهنمایی کنید
ممنون
سلام تشکر از شما
لطفا متن ارور خودتون رو ارسال کنید تا دقیق تر جواب بدم.
سلام خسته نباشید
مشکل قبلی حل شد
ولی یه مشکل دیگه پیش اومده و اونم اینه که خروجی برنامه روی ایمولانور بدون مشکل اجرا میشه ولی روی گوشی خودم که اندروید ۹ هستش از برنامه خارج میشه
توی build.gradle سطح app هم compileSdkVersion 28 , targetSdkVersion 28 هستن
سلام تشکر از شما
معمولا این مشکل زمانی اتفاق میفته که تصاویر شما داخل فولدر drawable-v24 قرار گرفته باشه حتما تصاویر مورد استفاده در اپ رو داخل فولدر drawable بریزید(حتی اگر یکی از تصاویر هم داخل v24 باشه این مشکل ایجاد میشه)
سلام خسته نباشد
این پوشه داخل پوشه ریسورسها نیست، وقتی برنامه برای اولین بار اجرا میشه تاصفحه لوگین میرسه بعد از ورود نام کاربری موقعی که روی دکمه ورود کلید میکنم خارج میشه دفعه بعد که اجرا میکنم چون اسم ذخیره شده از صفحه اسپلش از برنامه خارج میشه
خودم فکر میکنم از شیرد پرفرنسها باشه ولی چطور حلش کنم به کمک شما نیاز دارم
سلام وقت شما بخیر
مشکل شما میتونه مربوط به هر چیزی باشه شیرد پرفرنس یا حتی یک اشتباه خیلی جزئی دیگه ... برای رفع این مشکلات باید توانایی دیباگ کردن پروژه رو داشته باشید برای اینکار یک بار اپ رو کامل حذف کنید از روی دیوایس، مجددا run بگیرید و برنامه رو اجرا کنید دقیقا توی قسمتی که به شما ارور میده و از اپ خارج میشه روی دیوایس اون پیغام unfortunately forced close رو نبندید ،برگردید به اندروید استودیو از پایین صفحه گزینه logcat رو انتخاب کنید تو اون قسمت ارور شما نوشته شده (معمولا با رنگ قرمز و چند خطه، اولش هم نوشته begin crash) اون قسمت رو ارسال کنید تا بررسی کنیم با هم که مشکل کار از کجاست
سلام
تمام خطوط زیر قرمز بودن
2019-07-27 11:21:19.652 23020-23020/com.amiresmi.book E/SQLiteLog: (1) no such table: person
2019-07-27 11:21:19.653 23020-23020/com.amiresmi.book D/AndroidRuntime: Shutting down VM
2019-07-27 11:21:19.659 23020-23020/com.amiresmi.book E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.amiresmi.book, PID: 23020
android.database.sqlite.SQLiteException: no such table: person (code 1 SQLITE_ERROR[1]): , while compiling: SELECT * FROM person WHERE category = 'irani'
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1229)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:703)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:46)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1865)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1804)
at com.amiresmi.book.DataBase.DataBase.getIranPerson(DataBase.java:99)
at com.amiresmi.book.IranFragment.setupViews(IranFragment.java:43)
at com.amiresmi.book.IranFragment.onCreateView(IranFragment.java:35)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2439)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460)
at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:802)
at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625)
at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411)
at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366)
at androidx.fragment.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:2243)
at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:654)
at androidx.fragment.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:146)
at com.duolingo.open.rtlviewpager.DelegatingPagerAdapter.finishUpdate(DelegatingPagerAdapter.java:61)
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1244)
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1092)
at androidx.viewpager.widget.ViewPager.onMeasure(ViewPager.java:1622)
at com.duolingo.open.rtlviewpager.RtlViewPager.onMeasure(RtlViewPager.java:220)
at android.view.View.measure(View.java:24962)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7149)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1535)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:825)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:704)
at android.view.View.measure(View.java:24962)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7149)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:24962)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
at android.view.View.measure(View.java:24962)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7149)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
at android.view.View.measure(View.java:24962)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7149)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1535)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:825)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:704)
at android.view.View.measure(View.java:24962)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7149)
2019-07-27 11:21:19.660 23020-23020/com.amiresmi.book E/AndroidRuntime: at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:24962)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7149)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1535)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:825)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:704)
at android.view.View.measure(View.java:24962)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7149)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:1018)
at android.view.View.measure(View.java:24962)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3353)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:2082)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2381)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1942)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8595)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:988)
at android.view.Choreographer.doCallbacks(Choreographer.java:765)
at android.view.Choreographer.doFrame(Choreographer.java:700)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:967)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7156)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
سلام وقتتون بخیر
ارور شما میگه که چنین جدولی وجود ندارد... پس مشکل مربوط به دیتابیسه. کاری که باید انجام بدید اینه که یک بار دیگه و با دقت نام جدول و ستون های دیتابیس رو چک کنید که غلط املایی توش وجود نداشته باشه چون شما جدول person رو ساختید و ارور شما به علت اینه که این جدول رو نمیشناسه پس حتما نام رو اشتباه تایپ کردید حتما کلاس (info_db) رو چک کنید.
وقتی که کامل از درست بودن اونها مطمئن شدید اونوقت یک بار کامل نرم افزار رو حذف کنید (در هر صورت چه درست بودن و چه غلط بودن اطلاعات) تا دیتابیس مجددا روی دیوایس کپی بشه. حتما و حتما یه بار کامل و دقیق دیتابیس رو بررسی کنید و با ویدیو مقایسه کنید که به جواب برسید.
سلام
برنامه روی ایمولاتور بدون مشکل اجرا میشه ولی روی دیوایس واقعی که اجرا میگیرم این مشکل پیش میاد
چشم یک بار دیگه ویدیو های مربوط به دیتابیس رو میبینم و با کد خودم چک میکنم
اگه مشکل حل نشد مزاحم میشم
سلام
مشکل حل شد
توی info_db رشته package رو درست تعریف نکرده بودم درواقع یه قسمت اظافه داشت حذف کردم درست شد
ممنون برای وقتی که گذاشتید
سلام خدا رو شکر که مشکلتون حل شد.تشکر از شما
سلام مهندس وقتت بخیر .
public class DataBase extends SQLiteOpenHelper {
private Context context;
public DataBase(Context context) {
super(context,info_db.DATABASE_NAME,null,info_db.DATABASE_VERSION);
this.context = context;
isDataBase();
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
private void isDataBase(){
File check = new File(info_db.PACKAGE);
if (check.exists()){
}else{
check.mkdir();
}
check = context.getDatabasePath(info_db.DATABASE_NAME);
if (check.exists()){
}else{
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<Person> getAllPerson(){
SQLiteDatabase db =this.getReadableDatabase();
List<Person> data = new ArrayList<>();
String query = " SELECT * FROM person ";
Cursor cursor = db.rawQuery(query,null);
if (cursor.moveToFirst()){
do {
Person person = new Person();
person.setId(cursor.getInt(cursor.getColumnIndex(info_db.DATA_ID)));
person.setCategory(cursor.getString(cursor.getColumnIndex(info_db.DATA_CATEGORY)));
person.setName(cursor.getString(cursor.getColumnIndex(info_db.DATA_NAME)));
person.setFiled(cursor.getString(cursor.getColumnIndex(info_db.DATA_FILED)));
person.setDisc(cursor.getString(cursor.getColumnIndex(info_db.DATA_DISC)));
person.setImage(cursor.getString(cursor.getColumnIndex(info_db.DATA_IMAGE)));
person.setFav(cursor.getInt(cursor.getColumnIndex(info_db.DATA_FAV)));
data.add(person);
}while (cursor.moveToNext());
}
cursor.close();
db.close();
return data;
}
public List<Person> getiranPerson(){
SQLiteDatabase db = this.getReadableDatabase();
List<Person> data = new ArrayList<>();
String query = " SELECT * FROM person WHERE category = 'irani' ";
Cursor cursor = db.rawQuery(query,null);
if (cursor.moveToFirst()){
do {
Person person = new Person();
person.setId(cursor.getInt(cursor.getColumnIndex(info_db.DATA_ID)));
person.setCategory(cursor.getString(cursor.getColumnIndex(info_db.DATA_CATEGORY)));
person.setName(cursor.getString(cursor.getColumnIndex(info_db.DATA_NAME)));
person.setFiled(cursor.getString(cursor.getColumnIndex(info_db.DATA_FILED)));
person.setDisc(cursor.getString(cursor.getColumnIndex(info_db.DATA_DISC)));
person.setImage(cursor.getString(cursor.getColumnIndex(info_db.DATA_IMAGE)));
person.setFav(cursor.getInt(cursor.getColumnIndex(info_db.DATA_FAV)));
data.add(person);
}while (cursor.moveToNext());
}
cursor.close();
db.close();
return data;
}
public List<Person> getForeignPerson(){
SQLiteDatabase db = this.getReadableDatabase();
List<Person> data = new ArrayList<>();
String query = " SELECT * FROM person WHERE category = 'foreign' ";
Cursor cursor = db.rawQuery(query,null);
if (cursor.moveToFirst()){
do {
Person person = new Person();
person.setId(cursor.getInt(cursor.getColumnIndex(info_db.DATA_ID)));
person.setCategory(cursor.getString(cursor.getColumnIndex(info_db.DATA_CATEGORY)));
person.setName(cursor.getString(cursor.getColumnIndex(info_db.DATA_NAME)));
person.setFiled(cursor.getString(cursor.getColumnIndex(info_db.DATA_FILED)));
person.setDisc(cursor.getString(cursor.getColumnIndex(info_db.DATA_DISC)));
person.setImage(cursor.getString(cursor.getColumnIndex(info_db.DATA_IMAGE)));
person.setFav(cursor.getInt(cursor.getColumnIndex(info_db.DATA_FAV)));
data.add(person);
}while (cursor.moveToNext());
}
cursor.close();
db.close();
return data;
}
}
package com.ehsan.bookthink.Model;
public class Person {
private int id;
private String category;
private String name;
private String filed;
private String disc;
private String image;
private int fav;
public Person() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getFiled() {
return filed;
}
public void setFiled(String filed) {
this.filed = filed;
}
public String getDisc() {
return disc;
}
public void setDisc(String disc) {
this.disc = disc;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public int getFav() {
return fav;
}
public void setFav(int fav) {
this.fav = fav;
}
}
package com.ehsan.bookthink.DataBase;
public class info_db {
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "book1";
public static final String DATA_ID = "id";
public static final String DATA_CATEGORY = "category";
public static final String DATA_NAME = "name";
public static final String DATA_FILED = "filed";
public static final String DATA_DISC = "disc";
public static final String DATA_IMAGE = "image";
public static final String DATA_FAV = "fav";
public static final String PACKAGE = "data/data/com.ehsan.bookthink/databases/";
public static final String DATABASE_SOURCE = "book1.db";
}
غلط املایی به هیچ وجه ندارم نمیدونم متصل هم شدن به هم