hamidreza.kh

توسعه دهنده اندروید
  • تعداد ارسال ها

    20
  • تاریخ عضویت

  • آخرین بازدید

اعتبار در انجمن

2 Neutral

درباره hamidreza.kh

  • درجه
    Member
  • تاریخ تولد
  1. خسته نباشید دوستان من میخوام یه مقداری رو بگیرم که داخل تیبل settings از دیتابیسم بصورت key ,value ذخیرش کردم key ش sound هست که از نوع ورکرکتر هست و میخوام اگه مقدارش 1 هست یه عکسی رو نشون بده اگرم مقدارش 0 هست یه عکس دیگه رو(همزمان اگه مقدار 1 بود صدا پخش بشه اگرم 0 بود پخش نشه) خلاصه مطلب اما به یه اروری خوردم حالا میخواستم ببینم ایراد از کجاست؟! این کلاس دیتابیس منیجرم public class DatabaseManager extends SQLiteOpenHelper { private Context context; private static String DB_PATH = "data/data/com.wordstutorial.hamidrezak.wordstutorials/databases/"; private static String DB_NAME = "words_db.db"; public static String DB_TABLE_WORDS ="words"; public static String BD_TABLE_PLAY="play"; public static String DB_TABLE_SETTINGS="settings"; private static int DB_VERSION = 2; private SQLiteDatabase dbase; public DatabaseManager(Context context) { super(context, DB_NAME, null, DB_VERSION); this.context = context; } public void createDatabase(){ boolean dbExist = checkDatabase(); if (dbExist) { Log.d("TAG", "Database already Exist"); } else { this.getReadableDatabase(); } try { copyDataBase(); } catch (IOException e) { throw new Error("Error copying database"); } } private boolean checkDatabase() { SQLiteDatabase checkDB = null; try { String myPath = DB_PATH + DB_NAME; checkDB=SQLiteDatabase.openDatabase(myPath , null, SQLiteDatabase.OPEN_READWRITE); } catch (SQLiteException e) { } if (checkDB != null) { checkDB.close(); } return checkDB != null ? true : false; } private void copyDataBase() throws IOException { InputStream myInput = context.getAssets().open(DB_NAME); String outFileName = DB_PATH + DB_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 void openDataBase() throws SQLiteException { String myPath = DB_PATH + DB_NAME; dbase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); } public Cursor queryData(String query) { return dbase.rawQuery(query, null); } @Override public synchronized void close() { if (dbase != null) dbase.close(); super.close(); } @Override public void onCreate(SQLiteDatabase db) { ///DO NOTHING } @Override public void onUpgrade(SQLiteDatabase db, int oldV, int newV) { ///DO NOTHING } public int getSoundState(){ openDataBase(); Cursor cursor=queryData( " SELECT * FROM " + DB_TABLE_SETTINGS + " WHERE key='sound' "); cursor.moveToFirst(); return Integer.parseInt(cursor.getString(2)); } public boolean setSoundState(int state){ openDataBase(); ContentValues contentValues=new ContentValues(); contentValues.put("sound",state); long result=dbase.update(DB_TABLE_SETTINGS,contentValues," key = ? " , new String[] {"sound"} ); if (result < 1){ return true; }else { return false; } } } همونطوری که میبینید متد های گتر و ستر رو برای وضعیت صدام مشخص کردم... اینم کلاسی که میخوام اطلاعاتو ویرایش کنم... public class WordActivity extends AppCompatActivity { private MediaPlayer mediaPlayer; DatabaseManager db; private SQLiteDatabase sqLiteDatabase; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_word); Intent intent = getIntent(); final int id = intent.getIntExtra("id", 0); String word = intent.getStringExtra("word"); String imageWord = intent.getStringExtra("image"); String soundWord = intent.getStringExtra("sound"); int resID = getResources().getIdentifier(imageWord, "mipmap", getPackageName()); int resImage = this.getResources().getIdentifier(soundWord, "raw", this.getPackageName()); ImageView imageBox = (ImageView) findViewById(R.id.image_word_activity); final ImageView imageSoundState = (ImageView) findViewById(R.id.sound_state); if (db.getSoundState()==1){ Picasso.with(this).load(R.drawable.sound_play).into(imageSoundState); }else { Picasso.with(this).load(R.drawable.sound_stop).into(imageSoundState); } imageSoundState.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (db.getSoundState()==1){ if (db.setSoundState(0)){ Picasso.with(WordActivity.this).load(R.drawable.sound_stop).into(imageSoundState); } }else { if (db.setSoundState(1)){ Picasso.with(WordActivity.this).load(R.drawable.sound_play).into(imageSoundState); } } } }); TextView textBox = (TextView) findViewById(R.id.text_word_activity); Picasso.with(this).load(resID).into(imageBox); mediaPlayer = MediaPlayer.create(this, resImage); mediaPlayer.start(); textBox.setText(word); } @Override protected void onPause() { super.onPause(); mediaPlayer.release(); } اینم ارور ها 01-09 17:59:26.831 27683-27683/? I/art: Not late-enabling -Xcheck:jni (already on) 01-09 17:59:26.831 27683-27683/? W/art: Unexpected CPU variant for X86 using defaults: x86 01-09 17:59:26.883 27683-27683/com.wordstutorial.hamidrezak.wordstutorials W/System: ClassLoader referenced unknown path: /data/app/com.wordstutorial.hamidrezak.wordstutorials-1/lib/x86 01-09 17:59:26.902 27683-27683/com.wordstutorial.hamidrezak.wordstutorials W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable 01-09 17:59:27.099 27683-27711/com.wordstutorial.hamidrezak.wordstutorials I/OpenGLRenderer: Initialized EGL, version 1.4 01-09 17:59:27.099 27683-27711/com.wordstutorial.hamidrezak.wordstutorials D/OpenGLRenderer: Swap behavior 1 01-09 17:59:27.160 27683-27711/com.wordstutorial.hamidrezak.wordstutorials E/EGL_emulation: tid 27711: eglSurfaceAttrib(1146): error 0x3009 (EGL_BAD_MATCH) 01-09 17:59:27.160 27683-27711/com.wordstutorial.hamidrezak.wordstutorials W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x9d9648a0, error=EGL_BAD_MATCH 01-09 17:59:28.300 27683-27711/com.wordstutorial.hamidrezak.wordstutorials E/EGL_emulation: tid 27711: eglSurfaceAttrib(1146): error 0x3009 (EGL_BAD_MATCH) 01-09 17:59:28.301 27683-27711/com.wordstutorial.hamidrezak.wordstutorials W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x9d964a60, error=EGL_BAD_MATCH 01-09 17:59:30.948 27683-27683/com.wordstutorial.hamidrezak.wordstutorials E/SQLiteLog: (14) cannot open file at line 32456 of [bda77dda96] 01-09 17:59:30.948 27683-27683/com.wordstutorial.hamidrezak.wordstutorials E/SQLiteLog: (14) os_unix.c:32456: (2) open(//data/data/com.wordstutorial.hamidrezak.wordstutorials/databases/words_db.db) - 01-09 17:59:30.949 27683-27683/com.wordstutorial.hamidrezak.wordstutorials E/SQLiteDatabase: Failed to open database 'data/data/com.wordstutorial.hamidrezak.wordstutorials/databases/words_db.db'. android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method) at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209) at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193) at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463) at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185) at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177) at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:808) at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:793) at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:696) at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:671) at com.wordstutorial.hamidrezak.wordstutorials.DatabaseManager.checkDatabase(DatabaseManager.java:63) at com.wordstutorial.hamidrezak.wordstutorials.DatabaseManager.createDatabase(DatabaseManager.java:42) at com.wordstutorial.hamidrezak.wordstutorials.View.Activity.WordsActivity.loadDatabase(WordsActivity.java:41) at com.wordstutorial.hamidrezak.wordstutorials.View.Activity.WordsActivity.onCreate(WordsActivity.java:28) at android.app.Activity.performCreate(Activity.java:6662) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 01-09 17:59:31.466 27683-27711/com.wordstutorial.hamidrezak.wordstutorials E/EGL_emulation: tid 27711: eglSurfaceAttrib(1146): error 0x3009 (EGL_BAD_MATCH) 01-09 17:59:31.466 27683-27711/com.wordstutorial.hamidrezak.wordstutorials W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0x9d90cf20, error=EGL_BAD_MATCH 01-09 17:59:32.089 27683-27683/com.wordstutorial.hamidrezak.wordstutorials D/AndroidRuntime: Shutting down VM 01-09 17:59:32.089 27683-27683/com.wordstutorial.hamidrezak.wordstutorials E/AndroidRuntime: FATAL EXCEPTION: main Process: com.wordstutorial.hamidrezak.wordstutorials, PID: 27683 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wordstutorial.hamidrezak.wordstutorials/com.wordstutorial.hamidrezak.wordstutorials.View.Activity.WordActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.wordstutorial.hamidrezak.wordstutorials.DatabaseManager.getSoundState()' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.wordstutorial.hamidrezak.wordstutorials.DatabaseManager.getSoundState()' on a null object reference at com.wordstutorial.hamidrezak.wordstutorials.View.Activity.WordActivity.onCreate(WordActivity.java:43) at android.app.Activity.performCreate(Activity.java:6662) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) ممنون میشم کمک کنید ببینم مشکل از کجاست؟!
  2. مشکل از کجاست دوستان؟!
  3. سلام خسته نباشید به یه مشکلی خوردم تو فراخونی دیتابیس،نکته عجیبش اینه که من کدای دیتابیس رو دستکاری نکردم فقط از دیتابیس لوکاس استفاده میکنم یه سری تغییرات تو ستون های هر جدول تو دیتابیسم دادم و جالب تر از اون اینکه حالا که کدارو به حالت نرمالم برمیگردونم بازم ارور میده و میگه دیتابیس کپی نمیشه و نمیتونه باز بشه !!! این لیست کلاس دیتابیسم: public class DatabaseManager extends SQLiteOpenHelper { private Context context; private static String DB_PATH = "data/data/com.wordstutorial.hamidrezak.wordstutorials/databases"; private static String DB_NAME = " words_db.db "; public static String DB_TABLE_WORDS ="words"; public static String BD_TABLE_PLAY="play"; public static String DB_TABLE_SETTINGS="settings"; private static int DB_VERSION = 2; private SQLiteDatabase dbase; public DatabaseManager(Context context) { super(context, DB_NAME, null, DB_VERSION); this.context = context; } public void createDatabase() { boolean dbExist = checkDatabase(); if (dbExist) { Log.d("TAG", "Database already Exist"); } else { this.getReadableDatabase(); } try { copyDataBase(); } catch (IOException e) { e.printStackTrace(); throw new Error("Error copying database"); } } private boolean checkDatabase() { SQLiteDatabase checkDB = null; try { String myPath = DB_PATH + DB_NAME; checkDB.openDatabase(myPath , null, SQLiteDatabase.OPEN_READWRITE); } catch (SQLiteException e) { } if (checkDB != null) { checkDB.close(); } return checkDB != null ? true : false; } private void copyDataBase() throws IOException { InputStream myInput = context.getAssets().open(DB_NAME); String outFileName = DB_PATH + DB_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 void openDataBase() throws SQLiteException { String myPath = DB_PATH + DB_NAME; dbase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); } public Cursor queryData(String query) { return dbase.rawQuery(query, null); } @Override public void onCreate(SQLiteDatabase db) { ///DO NOTHING } @Override public void onUpgrade(SQLiteDatabase db, int oldV, int newV) { ///DO NOTHING } @Override public synchronized void close() { if (dbase != null) dbase.close(); super.close(); } کلاس پست هایی که میخوام بگیرم از دیتابیس public class WordsActivity extends AppCompatActivity { private List<Word> words; DatabaseManager db; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_words); loadDatabase(); TextAdapter wordsAdapter = new TextAdapter(this,words); RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view); recyclerView.setLayoutManager(new GridLayoutManager(WordsActivity.this, 2, LinearLayoutManager.VERTICAL, false)); recyclerView.setAdapter(wordsAdapter); } public void loadDatabase() { db=new DatabaseManager(WordsActivity.this); db.createDatabase(); db.openDataBase(); words=new ArrayList<>(); Cursor cursor = db.queryData(" SELECT * FROM " + DatabaseManager.DB_TABLE_WORDS); if (cursor != null) { if (cursor.moveToFirst()) { do { Word word = new Word(); word.setId(cursor.getInt(0)); word.setTitle(cursor.getString(1)); word.setImageview(cursor.getString(2)); word.setSound(cursor.getString(3)); words.add(word); } while (cursor.moveToNext()); } } db.close(); } } اینم کلاس اداپترم public class TextAdapter extends RecyclerView.Adapter<TextAdapter.TestViewHolder> { private Context context; private List<Word> words; public TextAdapter(Context context, List<Word> words) { this.context = context; this.words = words; } @Override public TestViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.tutorial_boxs_layout, parent, false); return new TestViewHolder(view); } @Override public void onBindViewHolder(final TestViewHolder holder, int position) { final Word word=words.get(position); holder.txtTitle.setText(word.getTitle()); int resID = context.getResources().getIdentifier(word.getImageview(), "mipmap", context.getPackageName()); holder.imageWord.setImageResource(resID); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(context, WordActivity.class); intent.putExtra("id",word.getId()); intent.putExtra("word",word.getTitle()); intent.putExtra("image",word.getImageview()); intent.putExtra("sound",word.getSound()); context.startActivity(intent); } }); } @Override public int getItemCount() { return words.size(); } public class TestViewHolder extends RecyclerView.ViewHolder { private TextView txtTitle; private ImageView imageWord; public TestViewHolder(View itemView) { super(itemView); txtTitle = (TextView) itemView.findViewById(R.id.box_title); imageWord = (ImageView) itemView.findViewById(R.id.box_image); } } } اینم ارور هایی که میده --------- beginning of crash 01-09 13:30:00.085 4969-4969/com.wordstutorial.hamidrezak.wordstutorials E/AndroidRuntime: FATAL EXCEPTION: main Process: com.wordstutorial.hamidrezak.wordstutorials, PID: 4969 java.lang.Error: Error copying database at com.wordstutorial.hamidrezak.wordstutorials.DatabaseManager.createDatabase(DatabaseManager.java:57) at com.wordstutorial.hamidrezak.wordstutorials.View.Activity.WordsActivity.loadDatabase(WordsActivity.java:41) at com.wordstutorial.hamidrezak.wordstutorials.View.Activity.WordsActivity.onCreate(WordsActivity.java:28) at android.app.Activity.performCreate(Activity.java:6662) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) مشکل از کجاست؟؟
  4. یه دنیا ممنون،با این کار اوکی شد،البته متد finish رو حذف کردم و قطع شدن مدیاپلیر هم بالا تر از این وقفه فراخونی کردم،حالا دقیقا اون چیزی شد که میخواستم،ممنونم
  5. ممنونم ولی یه مشکلی هست کد هامو ک میزارم اون تو جواب نمیده و اپ بیشتر هنگ میکنه؟! public void getAnswer(String answerString) { if (currentQ.getAnswer().equals(answerString)) { score++; Log.d("score", "Your score" + score); } if (qid < quesList.size()) { Thread stop = new Thread() { public void run() { try { sleep(500); mediaPlayer.release(); currentQ = quesList.get(qid); setQuestionView(); } catch (Exception e) { } } }; stop.start(); } else { Intent intent = new Intent(PlayActivity.this, ResultActivity.class); Bundle bundle = new Bundle(); bundle.putInt("score", score); intent.putExtras(bundle); startActivity(intent); finish(); } } کجای کار ایراد داره؟!
  6. ممنونم بهله مشکلم حل شد یه نکته ای که هستش اینه که میخوام وقتی که گزینه صحیح انتخاب میشه،یه چند ثانیه ای صبر کنه و بعد بره سوال بعدی ! باید از چه کلاسی استفاده کنم؟
  7. سلام خسته نباشید یه اپ پرسش و پاسخ داشتم،توی یه اکتیوی سوالات مختلفی رو میخوام نشون بدم،در واقع سوالم یه فایل صوتیه...حالا وقتی سوالم اجرا میشه و گزینه هاش میان فایل صوتیم اجرا میشه اینجاش درسته،اما وقتی که مثلا جواب سوال رو میدم، و میره سوال بعدی بازم صدای بعدی هم پخش میشه بدون اینکه صدای قبل متوقف بشه حالا از اونجایی ک توی یک اکتیویتی هست باید دستور stop برای مدیا پلیر رو کجا فراخونی کنم که مثلا از این سوال میره به سوال بعدی،فایل صوتی مربوط به همون سوال پخش بشه و فایل های صوتی قبلی پخش نشن؟
  8. ممنونم،دوتا سوال اول اینکه اگه بخوام روی 4 تا ایتمم ست بشن این اطلاعات باید جلوی rand عدد 4 رو بنویسم دیگه مثلا؟(یعنی 4تا رکورد رو از دیتابیس بگیره بصورت تصادفی)؟؟ دوم اینکه اگه بخوام از دیتابیس یه ستون خاص رو بگیره،مثلا من اینجا ستون صدا و نوشته رو دارم،بخوام کویری که میگیرم مثلا بصورت تصادفی،همه رکوردا رو فقط صداشون رو بگیره یعنی دیگه اون نوشته شون رو نگیره کویریم به چه شکل میشه؟
  9. سلام خسته نباشید ،قبل از طرح سوالم جا داره یه تشکر از رسیدگی های شما عزیزان خصوصا فرزاد خان که خیلی لطف میکنند به توسعه دهنده ها داشته باشم و اما سوال من،میخوام یه توی یک اکتیوی یه حالت مسابقه مانند بزارم توی دیتابیسم هر رکورد یه صدا داره و یک نوشته ، حالا میخوام بصورت کاملا تصادفی یه صدا پخش بشه ،و 4 تا گزینه(ایتم )داشته باشم ، و توی اون 4 تا بازم بصورت تصادفی 4 تا رکورد(همون قسمت نوشته هر رکورد)رو بصورت تصادفی بگیره و توی این 4 تا ایتم نشون بده،و وقتی روی گزینه صحیح کلیک شد بره مرحله بعد... حالا اولا اینکه باید از ریسایکلر ویو استفاده کرد؟ازین جهت این سوالو میپرسم چونکه ریسایکلر ویو ،ویو هولدر داره و میتونه اطلاعات هر ایتم رو هر بار بدون تغییر خود ایتم،عوض بکنه... دوم اینکه پیشنهاد شما چیه؟ پیشاپیش ممنونم
  10. میخوام با توجه به آیدی و اسمی که برای اون رکوردم توی دیتابیس ذخیره کردم،دقیقا همون صدا رو اجرا کنه توی یک اکتیویتی دیگه...یعنی میخوام با استفاده از اینتنت محتوا رو ببرم به یه اکتیویتی بعد با توجه به ایدی و نوشته ستون سوند(که اسم هر فایل صوتی هستش) توی هر اکتیویتی مجزا یه صدایی رو لود کنه مثلا توی اکتیویتی کلمه گل،صدای گل دقیقا پخش بشه(مثلا توی دیتابیس اسمشو گذاشتمflowersound و توی لوکال هم که میخوام پخش بشه اسمش flowersound.mp3 هستش !!! چیکار کنم؟
  11. یه اشکال تایپی بود،الان توی اکتیویتی جدید کلمه ام از دیتابیس و مشخصا اکتیویتی قبلی به اکتیویتی جدید اومده و اجرا میشه ، اما وقتی میخوام با picasso از دیتامدلم بگیرم و بریزمش توی یک image view درون کلاس word ،اونو نشون نمیده ! به عبارتی دیگه الان فقط تکس رو توی اکتیویتی جدید نشون میده و عکس رو نشون نمیده !!!! مشکل از چی میتونه باشه؟؟ آیا دلیلش میتونه این باشه که من با استفاده از mipmap اونو اجرا کردم و الان توی اکتیویتی دیگه با پیکاسو میخوام از دیتامدلم نشونش بدم لود نمیشه؟ اینم کدام: آداپترم: @Override public void onBindViewHolder(TestViewHolder holder, int position) { final Word word=words.get(position); holder.txtTitle.setText(word.getTitle()); int resID = context.getResources().getIdentifier(word.getImageview(), "mipmap", context.getPackageName()); holder.imageWord.setImageResource(resID); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(context, WordActivity.class); intent.putExtra("id",word.getId()); intent.putExtra("word",word.getTitle()); intent.putExtra("image",word.getImageview()); context.startActivity(intent); } }); } @Override public int getItemCount() { return words.size(); } public class TestViewHolder extends RecyclerView.ViewHolder { private TextView txtTitle; private ImageView imageWord; public TestViewHolder(View itemView) { super(itemView); txtTitle = (TextView) itemView.findViewById(R.id.box_title); imageWord = (ImageView) itemView.findViewById(R.id.box_image); } } } اینم اکتیویتی word public class WordActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_word); Intent intent=getIntent(); int id=intent.getIntExtra("id",0); String word=intent.getStringExtra("word"); String imageWord=intent.getStringExtra("image"); ImageView imageBox=(ImageView)findViewById(R.id.image_word_activity); TextView textBox=(TextView)findViewById(R.id.text_word_activity); Picasso.with(this).load(imageWord).into(imageBox); textBox.setText(word); } } ممنون میشم کمکم کنید
  12. سلام من از دیتابیس داخلی استفاده میکنم و دیتابیسمو ساختم.توی یک صفحه یه لیستی از پست ها دارم میخوام روی اون پست که کلیک شد بره به اکتیویتی بعدی و اون اطلاعات پست رو بصورت کامل تر نمایش بده طوری که معلومه این کار باید با اینتنت صورت بگیره ،حالا من اینتنتم رو ساختم و کداش رو قرار دادم اما اکتیویتی ک میاد خالیه خالی هستش،مشکل از کجاست؟ اینم کدام کلاس دیتابیس(که داخلی و لوکال هست) public class DatabaseManager extends SQLiteOpenHelper { private Context context; private static String DB_PATH = "data/data/com.wordstutorial.hamidrezak.wordstutorials/databases"; private static String DB_NAME = "words_db.db"; public static String DB_TABLE_WORDS ="words"; private static String DB_TABLE_SETTINGS="ssetings"; private static int DB_VERSION = 1; private SQLiteDatabase myDataBase; public DatabaseManager(Context context) { super(context, DB_NAME, null, DB_VERSION); this.context = context; } public void createDatabase() { boolean dbExist = checkDatabase(); if (dbExist) { Log.d("TAG", "Database already Exist"); // my Cods ... } else { this.getReadableDatabase();// } try { copyDataBase(); } catch (IOException e) { e.printStackTrace(); throw new Error("Error copying database"); } } /////////////////////////////////////////////////////////////////////////////////////////////////// private boolean checkDatabase() { SQLiteDatabase checkDB = null; try { String myPath = DB_PATH + DB_NAME; checkDB.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); } catch (SQLiteException e) { } if (checkDB != null) { checkDB.close(); } return checkDB != null ? true : false; } private void copyDataBase() throws IOException { InputStream myInput = context.getAssets().open(DB_NAME); String outFileName = DB_PATH + DB_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 void openDataBase() throws SQLiteException { String myPath = DB_PATH + DB_NAME; myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); } @Override public synchronized void close() { if (myDataBase != null) myDataBase.close(); super.close(); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } public Cursor queryData(String query) { return myDataBase.rawQuery(query, null); } //____________________________________________________________________________________________________________________________ public Bitmap getBitmapFromAssets(String fileName) throws IOException { AssetManager assetManager = context.getAssets(); InputStream inputStream = assetManager.open(fileName); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); return bitmap; } } کلاس آداپتر و ویو هولدرم (به اون اینتنی که نوشتم دقت بکنید) ublic class TextAdapter extends RecyclerView.Adapter<TextAdapter.TestViewHolder> { private Context context; private List<Word> words; public TextAdapter(Context context, List<Word> words) { this.context = context; this.words = words; } @Override public TestViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.tutorial_boxs_layout, parent, false); return new TestViewHolder(view); } @Override public void onBindViewHolder(TestViewHolder holder, int position) { DatabaseManager db=new DatabaseManager(context); holder.txtTitle.setText(words.get(position).getTitle()); int resID = context.getResources().getIdentifier(words.get(position).getImageview(), "mipmap", context.getPackageName()); if((words.get(position).getImageview()).equals("0")) { try { holder.imageWord.setImageBitmap(db.getBitmapFromAssets("pic1_sample.png")); } catch (IOException e) { e.printStackTrace(); } } else { holder.imageWord.setImageResource(resID); } holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(context, WordActivity.class); Word word=new Word(); intent.putExtra("id",word.getId()); intent.putExtra("word",word.getTitle()); intent.putExtra("image",word.getImageview()); context.startActivity(intent); } }); } @Override public int getItemCount() { return words.size(); } public class TestViewHolder extends RecyclerView.ViewHolder { private TextView txtTitle; private ImageView imageWord; public TestViewHolder(View itemView) { super(itemView); txtTitle = (TextView) itemView.findViewById(R.id.box_title); imageWord = (ImageView) itemView.findViewById(R.id.box_image); } } } اینم اکتیویتی ک میخوام اطلاعات رو برام با استفاده از اینتنت نمایش بده public class WordActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_word); Intent intent=getIntent(); int id=intent.getIntExtra("id",0); String wordTitle=intent.getStringExtra("word"); String image=intent.getStringExtra("image"); ImageView imageBox=(ImageView)findViewById(R.id.box_image); TextView textBox=(TextView)findViewById(R.id.box_title); Picasso.with(this).load(image).into(imageBox); textBox.setText(wordTitle); } } ممنون میشم کمک کنید ببینم چرا اکتیویتیم خالی میاد؟
  13. خیلی ممنونم... فقط یه نکته داخل اداپترم صدا رو با چه فیلدی ذخیره کنم؟ مثلا توی لایوت یه ایمیج ویو ساختم و روی اون عکس رو ست کردم حالا برای صدا چیکار کنم؟(چون میخوام هر رکوردم یه دونه صدا داشته باشه پس باید فیلد sound رو هم توی اداپتر ست کنم دیگه؟
  14. سلام خیلی خیلی ممنونم،بله با این تیکه کد عکس رو اضافه کردم از لوکال،که خیلی کاربردی بود،سپاسگذارم حالا آیا با همین روش یا یه چیزی شبیه این میشه صدا رو هم لود کرد؟ یعنی مثلا اسمشو توی دیتابیس بزاریم و با یه همچین چیزی لودش کنیم؟
  15. سلام خسته نباشید توی دیتابیسم چندتا ستون دارم به اسم کلمه،عکس و صدا ! کلمع و عکس رو توی اپ اوردم ولی مشکلم با صدا هستش،چجوری اینو وارد اپ کنم؟ آیا بصورت Blob اونو بزارم تو دیتابیس و لودش کنم یا اینکه تو دیتابیس فقط اسمشو بزارم؟ و نکته دیگه اینکه توی جاوا واسه اوردنش از چه کلاسی استفاده کنم؟(مثلا واسه عکس از بیت مپ استفاده کردم) ممنون میشم راهنماییم کنید