رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

پست های پیشنهاد شده

سلام و درود 

دوستان بنده برنامه ای مطابق شکل ساخته ام الان می خوام یه ایتم دیگه بهش اضافه کنم 

یه ایتم شمارنده یعنی با ارسال هر لغت صحیح به شمارنده یک عدد اضافه شود و بیشترین رکورد کاربر ذخیره شود و هر بار در کنار شمارنده قرار می گیرد و با شکسته شدن رکورد توسط کاربر رکورد جدید قرار بگیرد.

ممنون میشوم اگر کسی بلده و یا قطعه کدی داره 

 

Screenshot_2017-01-05-22-08-07.png

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام دوست عزیز

زمانی که کاربر شروع میکنه به بازی رکورد قبلیشو از جدول بگیرین و تو یه متغییر بزارین و میتونید اینو تو یه TextView کنار رکورد فعلی نشون بدین.

هربار که یه لغت صحیح وارد میکنه با این امتیاز چک کنید اگه کوچیکتر بود که هیچ ولی اگه بزرگتر بود به هردو(هم امتیاز فعلی و هم  بیشترین امتیازش که از جدول گرفتین) یه امتیاز بدین اینجوری رکورد قبلیش هم با هر جواب صحیح بیشتر میشه.حتی میتونید تو این حالت رنگشو هم تغییر بدین.و زمانی وقتش تموم شد اینو تو جدولتون ذخیره کنید.

اگه مشکلی تو این قسمت داشتین بگین تا کدشو براتون بزارم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

 

در 1 ساعت قبل، a.khosroabadi گفته است :

سلام دوست عزیز

زمانی که کاربر شروع میکنه به بازی رکورد قبلیشو از جدول بگیرین و تو یه متغییر بزارین و میتونید اینو تو یه TextView کنار رکورد فعلی نشون بدین.

هربار که یه لغت صحیح وارد میکنه با این امتیاز چک کنید اگه کوچیکتر بود که هیچ ولی اگه بزرگتر بود به هردو(هم امتیاز فعلی و هم  بیشترین امتیازش که از جدول گرفتین) یه امتیاز بدین اینجوری رکورد قبلیش هم با هر جواب صحیح بیشتر میشه.حتی میتونید تو این حالت رنگشو هم تغییر بدین.و زمانی وقتش تموم شد اینو تو جدولتون ذخیره کنید.

اگه مشکلی تو این قسمت داشتین بگین تا کدشو براتون بزارم

سلام و درود دوست عزیز 

سپاس از راهنماییتون و وقتی ک گذاشتین

چون ک بنده تازه کارم و زیاد مسلط نیستم ممنون می شوم اگر در صورتی ک وقت کافی دارین کد رو واسم بنویسید

بازم ممنونم

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 1 دقیقه قبل، arsin گفته است :

 

سلام و درود دوست عزیز 

سپاس از راهنماییتون و وقتی ک گذاشتین

چون ک بنده تازه کارم و زیاد مسلط نیستم ممنون می شوم اگر در صورتی ک وقت کافی دارین کد رو واسم بنویسید

بازم ممنونم

سلام خواهش میکنم 

مشکلی نیست فقط اگه عجله ندارید چون ممکنه تا بعدازظهر زمان ببره الان محل کارم هستم.

فقط دیتابیس رو ساختین و جداول رو؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 7 دقیقه قبل، a.khosroabadi گفته است :

سلام خواهش میکنم 

مشکلی نیست فقط اگه عجله ندارید چون ممکنه تا بعدازظهر زمان ببره الان محل کارم هستم.

فقط دیتابیس رو ساختین و جداول رو؟

بازم ممنونم 

نه اصن مشکلی نیست دوست عزیز 

نه هنوز جدول هارو نساختم  چندتا جدول می خواد دوتا می خواد

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بستگی به طراحیتون داره ولی برای امتیاز دادن فکر میکنم 1 جدول کافی باشه.ولی اگه قراره امتیازات دیگه ای هم ثبت کنید به جدول های بیشتری نیاز دارین.

من بیزینس این قسمت امتیازاتو براتون مینویسم

قسمت دیتابیس رو خودتون انجام بدین.ولی اگه برای این قسمت هم مشکلی وجود داشت بگین تا راهنماییتون کنم.

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 1 دقیقه قبل، a.khosroabadi گفته است :

بستگی به طراحیتون داره ولی برای امتیاز دادن فکر میکنم 1 جدول کافی باشه.ولی اگه قراره امتیازات دیگه ای هم ثبت کنید به جدول های بیشتری نیاز دارین.

من بیزینس این قسمت امتیازاتو براتون مینویسم

قسمت دیتابیس رو خودتون انجام بدین.ولی اگه برای این قسمت هم مشکلی وجود داشت بگین تا راهنماییتون کنم.

یه دنیا ممنونم جناب خسروآبادی

فقط یک قسمت واسه امتیاز هر بار بازی کردن(تعداد لغات درست) و یکی دیگه واسه ثبت بیشترین رکورد کاربر

همین قسمت بیزینس رو واسم بنویسید خودم سعی می کنم دیتا بیسش رو درست کنم اگر بازم مشکلی داشتم حتم اطلاع میدم

تشکر از راهنماییهاتون و وقتی ک گذاشتین

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خواهش میکنم خوشحال میشم بتونم کمکتون کنم.

پس به یک جدول احتیاج دارین که فقط یک رکورد امتیاز توش ثبت بشه.

اگه بازی های مختلفی داشتین به یک جدول دیگه که لیست بازیهاتون باشه احتیاج داشتین.

من تو اولین فرصت براتون میفرستم کد این قسمتو.

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 1 دقیقه قبل، a.khosroabadi گفته است :

خواهش میکنم خوشحال میشم بتونم کمکتون کنم.

پس به یک جدول احتیاج دارین که فقط یک رکورد امتیاز توش ثبت بشه.

اگه بازی های مختلفی داشتین به یک جدول دیگه که لیست بازیهاتون باشه احتیاج داشتین.

من تو اولین فرصت براتون میفرستم کد این قسمتو.

سپاس از لطفتون

نه فقط همین یه بازی هستش فعلا 

بازم ممنون:rolleyes:

لینک ارسال
به اشتراک گذاری در سایت های دیگر
\\maxPoint , currentPoint   moteghaier az noe Integer hastand ke to sathe activity tarif mikonid;
maxPoint = getMaxpointFromDataBase();
currentPoint = 0;

\\ in if bezar to method onCreate();
if(maxPoint == null)
  maxPoint = 0; \\ zamani ke baraie avalin bar miad bazi kone va hanoz hich emtiazi barash sabt nashode.ino mitoni zamani ke az database mikhoni ham handle koni.
  
\\ in ghesmato ham baiad to method onClick benevisi zamani ke kalamei ke vared karde sahihe 

currentPoint++;

if(currentPoint> maxPoint){
	maxPoint++;
	\\  textView ke gharare behtarin emtiazo neshon bede;
	maxpointTextView.setText(maxPoint);
}


\\ zamani ke bazi tamom mishe ham baiad maxPoint zakhire koni

saveMaxPointInDatabase(maxPoint);
 

 

ویرایش شده توسط a.khosroabadi
لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 8 ساعت قبل، a.khosroabadi گفته است :

یه کد ساده با توضیحاتش براتون گذاشتم باز اگه مشکلی داشت بگین

یک دنیا ممنونم جناب خسرو آبادی 

واقعا لطف کردین 

انشاالله ک مشکلی نیست ولی اگه مشکلی داشتم حتما می گم

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 8 ساعت قبل، arsin گفته است :

یک دنیا ممنونم جناب خسرو آبادی 

واقعا لطف کردین 

انشاالله ک مشکلی نیست ولی اگه مشکلی داشتم حتما می گم

خواهش میکنم دوست عزیز

کاری نکردم انجام وظیفه هستش

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 13 ساعت قبل، a.khosroabadi گفته است :

خواهش میکنم دوست عزیز

کاری نکردم انجام وظیفه هستش

جناب خسرو آبادی سلام 

خیلی کار کردم با کد هایی ک نوشتی اما در قسمت دیتابیس مشکل دارم

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 5 دقیقه قبل، arsin گفته است :

جناب خسرو آبادی سلام 

خیلی کار کردم با کد هایی ک نوشتی اما در قسمت دیتابیس مشکل دارم

 

سلام شبتون بخیر

چه مشکلی؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 4 دقیقه قبل، a.khosroabadi گفته است :

سلام شبتون بخیر

چه مشکلی؟

سلام شب شما هم بخیر 

 

88.jpg

89.jpg

دیتابیس 

90.jpg

 

91.jpg

ویرایش شده توسط arsin
لینک ارسال
به اشتراک گذاری در سایت های دیگر

خوب الان با cursor چه کاری انجام میدین؟

میشه کدتونو کامل بزارین

و اینکه وقتی  رو این خطا کلیک میکنید به کدوم خط از کدتون میره؟

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 11 دقیقه قبل، a.khosroabadi گفته است :

خوب الان با cursor چه کاری انجام میدین؟

میشه کدتونو کامل بزارین

و اینکه وقتی  رو این خطا کلیک میکنید به کدوم خط از کدتون میره؟

 

فایل جاوا همون صفحه  و دیتابیس برنامم

Data_b.java

Start.java

ویرایش شده توسط arsin
لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 19 دقیقه قبل، arsin گفته است :

چندتا مشکل وجود داشت

اول اینکه maxPoint و currentPoint باید از نوع Integer تعریف کنی تا بتونی باهم مقایسه کنی و یا null بودنشو چک کنی.خطایی که داده به این دلیل هستش.

مشکل بعدی اینکه maxPoint از هیچ جایی مقدار نمیگره قرار بود مقداری که از جدول میگیرین بریزین داخل این.چون نمیدونم طراحی جدولتون به چه صورت هستش.نمیتونم در مورد ابجکت cursor راهنمایی بکنم و بگم چجوری ازش مقدار بگیرین.

باید بیشترین امتیازو که از دیتابیس میخونین و تو ابجکت cursor هستش بریزین تو maxPoint قبلش چک کنید cursor خالی نباشه که خطا بگیرین.

 

و یه چیزی که به نظرم رسید اینکه زمانی که بازی تموم میشه maxPoint ذخیره کنید نه با هر کلیک.

ویرایش شده توسط a.khosroabadi
لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 17 دقیقه قبل، a.khosroabadi گفته است :

چندتا مشکل وجود داشت

اول اینکه maxPoint و currentPoint باید از نوع Integer تعریف کنی تا بتونی باهم مقایسه کنی و یا null بودنشو چک کنی.خطایی که داده به این دلیل هستش.

مشکل بعدی اینکه maxPoint از هیچ جایی مقدار نمیگره قرار بود مقداری که از جدول میگیرین بریزین داخل این.چون نمیدونم طراحی جدولتون به چه صورت هستش.نمیتونم در مورد ابجکت cursor راهنمایی بکنم و بگم چجوری ازش مقدار بگیرین.

باید بیشترین امتیازو که از دیتابیس میخونین و تو ابجکت cursor هستش بریزین تو maxPoint قبلش چک کنید cursor خالی نباشه که خطا بگیرین.

 

و یه چیزی که به نظرم رسید اینکه زمانی که بازی تموم میشه maxPoint ذخیره کنید نه با هر کلیک.

جناب خسرو آبادی واقعا نمی دونم چیکار کنم خودمم قاطی کردم 

یکی اینکه max point , curentPoint از نوع اینتیجر قرار داده ام 

جدولمم به صورت زیر هستش 

وقت شما رو هم گرفتم

اگر خودتون وقتش رو دارین خواهشن واسم درستش کنید اگرم وقت ندارید بازم سپاس از وقتی ک گذاشتین

 

92.jpg

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 9 ساعت قبل، arsin گفته است :

جناب خسرو آبادی واقعا نمی دونم چیکار کنم خودمم قاطی کردم 

یکی اینکه max point , curentPoint از نوع اینتیجر قرار داده ام 

جدولمم به صورت زیر هستش 

وقت شما رو هم گرفتم

اگر خودتون وقتش رو دارین خواهشن واسم درستش کنید اگرم وقت ندارید بازم سپاس از وقتی ک گذاشتین

 

92.jpg

سلام صبح بخیر ببخشید من الان دیدم پیغامتونو باشه براتون کدهاشو میزارم.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

تو کد max point و currentPoint به این صورت تعریف شده که از نوع int هستش و نه Integer 

int counter,itemPosition,alarmSound=0 , currentPoint = 0,maxPoint = 0;

من کدتونو تغییر دادم و فایل هاشو گذاشتم براتون.تغییراتی که دادمو مینویسم اینجا هم متغییر های بالارو  به این صورت تعریف کردم

    int counter,itemPosition,alarmSound=0;
	Integer  currentPoint = 0,maxPoint = 0;

متد getMaxPoint تغییر دادم تو کلاس Data_b 

public Integer getMaxPoint(){
					Integer maxPoint = 0;
					String query = "select TOP 1 * from maxPoint ORDER BY maxPoint DESC";
					 cursor = mDataBase.rawQuery(query, null);
					  if (cursor != null) {
							cursor.moveToFirst();
							maxPoint = cursor.getInt(cursor.getColumnIndex("MaxPoint"))
						}
						
						return maxPoint;
		}

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

تو کد max point و currentPoint به این صورت تعریف شده که از نوع int هستش و نه Integer 

int counter,itemPosition,alarmSound=0 , currentPoint = 0,maxPoint = 0;

من کدتونو تغییر دادم و فایل هاشو گذاشتم براتون.تغییراتی که دادمو مینویسم اینجا هم متغییر های بالارو  به این صورت تعریف کردم

    int counter,itemPosition,alarmSound=0;
	Integer  currentPoint = 0,maxPoint = 0;

متد getMaxPoint تغییر دادم تو کلاس Data_b 

public Integer getMaxPoint(){
					Integer maxPoint = 0;
					String query = "select TOP 1 * from Point ORDER BY maxPoint DESC";
					 cursor = mDataBase.rawQuery(query, null);
					  if (cursor != null) {
							cursor.moveToFirst();
							maxPoint = cursor.getInt(cursor.getColumnIndex("MaxPoint"))
						}
						
						return maxPoint;
		}

Data_b.javaData_b.java

تو کلاس Start  هم قسمتی که مقدار maxPoint میگرفت به صورت زیر نوشتم 

         maxPoint = database.getMaxPoint();
         currentPoint = 0;

و شرط if دیگه حذف کردم چون گذاشتم تو خود متد getMaxpoint

 

اگه ممکنه تیبل MaxPoint  به این صورت تعریف کنید 

CREATE TABLE [POINT] ([Id] INTEGER PRIMARY KEY AUTOINCREMENT,[MaxPoint] INTEGER));

Data_b.java

Start.java

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • مطالب مشابه

    • توسط aliazmoodeh
      سلام من یه آپی دارم یه قسمت وجود داره که اطلاعات رو از سرور میگیره و تو ریسایکلرویو نمایش میده من میخوام این اطلاعات رو تو حالت افلاین هم داشته باشم یعنی چی یعنی بتونم اطلاعاتی که از سرور گرفتم قبلا رو وقتی کاربر اینترنت بهش نمایش بدم دقیقن مثله تلگرام میگم ولی نمیدونم باید چیکار کنم اگر اموزشی در این رابط دارید بهم بگید یا سورسی دارید بهم بگید پولی یا رایگان باشه برام فرقی نمیکنه فقط میخوام مشکلمو حل کنه
    • توسط Vahid761
      دوستان سلام . لطفا کمک کنید . راستش من می خواستم یک text view بسازم که وقتی  یک button دستور یک دستور خاصی رو ارسال کنه متن اون text view تغیر کنه که البته تاحدودی هم موفق شدم ولی مشکلی که هست اینه که اون متن جدید   save نمیشه یعنی با یه باز وبسته کردن اپ دورباره برمیگرده به اون متن اولی یعنی می خوام اون متن جدید رو save کنم  دوستان اگه بلدید چطوری حل میشه خواهشا لطفا کمک کنید تا  این مشکل رو حل کنم ....
    • توسط h.a.m.i.d
      سلام دوستان وقت بخیر ، من دارم یه اپلیکشن آماده می کنم که ارتباط با سرور داره
      داخل هاست من یه یه دیتابیس دارم که اینجا تیبل  users مد نظرم هست، داخل این جدول من چهار ستون دارم که عبارتند از ID,username,pass,date
      date زمان عضوت کاربر به صورت خودکار پر میشه
      حالا سوال اینجاست که من یه بخش پروفایل داخل مین اکتیوتیم دارم که میخوام داخلش تاریخ عضویت کاربر نشون داده بشه، روال به اینصورت هست که داخل اپ یوزنیم و پس رو از شیردپرفرینس میگیره میفرسته به سمت سرور و داخل فایل php اطلاعات دریافت میشه و ستون تاریخ متناظر با اون اطلاعات کاربری دوباره ارسال میشه به سمت اندروید و محتوای تکست ویو مورد نظر رو میسازه ، ولی من تو دریافت اطلاعات از php داخل اپلیکیشن و نوشتن کدها به مشکل خوردم اگه ممکنه برنامه و یا کدهای  php رو برام اصلاح کنید ممنونم.
      برنامه سمت اندروید:
      private void ShowProfile(){ profile = new MaterialDialog.Builder(MainActivity.this) .customView(R.layout.alert_aprofile,false) .show(); AsyncHttpPost post = new AsyncHttpPost( "http://****************profile.php" ); post.setTimeout(5000); MultipartFormDataBody body = new MultipartFormDataBody(); body.addStringPart("Username",sp.getString("Username", null)); body.addStringPart("Pass",sp.getString("Pass", null)); post.setBody(body); AsyncHttpClient.getDefaultInstance().executeString(post, new AsyncHttpClient.StringCallback() { @Override public void onCompleted(final Exception e, AsyncHttpResponse source, final String result) { if (e != null) { MainActivity.this.runOnUiThread(new Runnable() { @Override public void run() { wait.dismiss(); Toast.makeText(MainActivity.this, "no connection", Toast.LENGTH_LONG).show(); e.printStackTrace(); } }); } if (!result.equals("")) { MainActivity.this.runOnUiThread(new Runnable() { @Override public void run() { items.clone(); try { JSONArray jsonArray = new JSONArray(result); for (int i = 0; i < jsonArray.length(); i++) { JSONObject object = jsonArray.getJSONObject(i); HashMap<String, Object> hash_add = new HashMap<String, Object>(); hash_add.put("Date", object.getString("Date")); hash_all.add(hash_add); items = new String[hash_all.size()]; } } catch (Exception e) { e.printStackTrace(); } } }); } } }); کدهای php :
      function get(){ $connection = connectToDatabase(); $Username = $_REQUEST['Username']; $Pass = $_REQUEST['Pass']; if($Username!="" && $Pass!=""){ $result = mysqli_query($connection,"select Date from users where Username='$Username' and Pass='$Pass'"); $array_finish = array(); while($row = mysqli_fetch_array($result)){ $record = array(); $record['Date'] = $row['Date']; $array_finish[] = $record ; } echo json_encode($array_finish); }else { print "null"; } mysqli_close($connection); } می دونم که سمت اندروید برنامه م کامل نیست پس اگه راهی هست راهنماییم کنید کدهای متناسب با این php رو داخل اندروید بنویسم.
      ممنونم
       
    • توسط takin
      سلام 
      داشتم یه بازی آنلاین چهار نفره میساختم که به مشکل بر خودم 
      داخل بازی ازین قراره که هرکس میتونه به چهار جهت بالا پایین حرکت کنه و شلیک کنه 
      توضیحات بیشتر درمورد بازی
      ما دو آبجکت داریم  (گلوله) (پلیر)
      x و y متغیر محور مکان آبجکت که با کلید ها تغییر میکنه .
      با گزینه اسپیس ابجکت گلوله به وجود میاد با مختصات همون آبجکتی که شلیک کرده 
      مشکل
      مشکلم تو ارسال اطلاعات برای بقیست
      مشکل اصلیم ارسال زمان شلیکه 
      نظر خودم
      به نظرم یه جدول در mysql درست کنم که هر شخص محور های x و y داخل اون بفرسته هر لحضه
      یه جدول دیگه درست کنم که هروقت شلیک کرد سه تا تب به اسم سه بازیکن دیگه بسازه که هرکدوم از سه نفر اطلاعاتشو دریافت کرد اون تبی که با آیدیشه پاک بشه
      به نظرم کار میکنه اما دنبال یه روش درستم 
       
       
    • توسط hackn82
      سلام خدمت اساتید گرامی . 

      من یه برنامه نوشتن که برای یادگیری لغاته . وقتی کاربر لغتی رو به بخش علاقه مندی اضافه می کنه لغت نمایش داده نمیشه و باید برنامه رو مجدد اجرا کرد تا لغت انتخاب شده به بخش علاقه مندی اضافه/ حذف بشه . همچنین بعد از هر بار اجرا لیست لغات تکرار میشه ( مثلا بار دوم از هر کدوم 2 سری بار سوم از هرکدوم 3 سری و ... ) ایجاد میشه . ممنون میشم راهنماییم کنید . 
       
      package farmani.com.essentialwordsforielts.mainPage; import android.Manifest; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Build; import android.os.Environment; import android.support.annotation.NonNull; import android.support.design.widget.NavigationView; import android.support.design.widget.TabLayout; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v4.view.ViewPager; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Gravity; import android.view.MenuItem; import android.view.View; import android.widget.ImageView; import android.widget.Toast; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import farmani.com.essentialwordsforielts.R; import farmani.com.essentialwordsforielts.search.ActivitySearch; public class MainActivity extends AppCompatActivity { public static Context context; public static ArrayList<Structure> list = new ArrayList<>(); public static ArrayList<Structure> favorite = new ArrayList<>(); DrawerLayout drawerLayout; NavigationView navigationView; ImageView hamburger; SQLiteDatabase database; String destPath; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.navigation_activity_main); if (Build.VERSION.SDK_INT >= 23) { if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this , new String[]{Manifest.permission.READ_EXTERNAL_STORAGE , Manifest.permission.WRITE_EXTERNAL_STORAGE} , 1); } else if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this , new String[]{Manifest.permission.READ_EXTERNAL_STORAGE , Manifest.permission.WRITE_EXTERNAL_STORAGE} , 1); } else { setupDB(); selectList(); selectFavorite(); Toast.makeText(MainActivity.this, "You grandet earlier", Toast.LENGTH_LONG).show(); } } if (!favorite.isEmpty()){ favorite.clear(); selectFavorite(); } else if (!list.isEmpty()){ list.clear(); selectList(); } context = getApplicationContext(); setTabOption(); drawerLayout = findViewById(R.id.navigation_drawer); navigationView = findViewById(R.id.navigation_view); hamburger = findViewById(R.id.hamburger); hamburger.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { drawerLayout.openDrawer(Gravity.START); } }); navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { int id = item.getItemId(); if (id == R.id.exit) { AlertDialog.Builder alertDialog = new AlertDialog.Builder( MainActivity.this); alertDialog.setTitle(R.string.exit); alertDialog.setMessage(R.string.exit_ask); alertDialog.setCancelable(false); alertDialog.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { finish(); } }); alertDialog.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); alertDialog.show(); } if (id == R.id.search) { Intent intent = new Intent(MainActivity.this, ActivitySearch.class); MainActivity.this.startActivity(intent); } return true; } }); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case 1: { if (grantResults.length >= 2 && grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED) { Toast.makeText(MainActivity.this, "Access granted", Toast.LENGTH_LONG).show(); } } } } @Override public void onBackPressed() { if (drawerLayout.isDrawerOpen(Gravity.START)) { drawerLayout.closeDrawer(Gravity.START); } else { AlertDialog.Builder alertDialog = new AlertDialog.Builder( MainActivity.this); alertDialog.setTitle(R.string.exit); alertDialog.setMessage(R.string.exit_ask); alertDialog.setCancelable(false); alertDialog.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { finish(); } }); alertDialog.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); alertDialog.show(); } } private void setTabOption() { ViewPager viewPager = findViewById(R.id.viewpager); viewPager.setAdapter(new AdapterFragment(getSupportFragmentManager(), context)); TabLayout tabStrip = findViewById(R.id.tabs); tabStrip.setupWithViewPager(viewPager); } private void setupDB() { try { destPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/ielts/"; File file = new File(destPath); if (!file.exists()) { file.mkdirs(); file.createNewFile(); CopyDB(getBaseContext().getAssets().open("md_book.db"), new FileOutputStream(destPath + "/md_book.db")); } } catch (IOException e1) { e1.printStackTrace(); } } @Override protected void onResume() { super.onResume(); if (!favorite.isEmpty()){ favorite.clear(); selectFavorite(); } else if (!list.isEmpty()){ list.clear(); selectList(); } } private void CopyDB(InputStream inputStream, OutputStream outputStream) throws IOException { byte[] buffer = new byte[1024]; int length; while ((length = inputStream.read(buffer)) > 0) { outputStream.write(buffer, 0, length); } inputStream.close(); outputStream.close(); } private void selectFavorite() { database = SQLiteDatabase.openOrCreateDatabase(destPath + "/md_book.db", null); Cursor cursor = database.rawQuery("SELECT * FROM main WHERE fav = 1", null); while (cursor.moveToNext()) { String word = cursor.getString(cursor.getColumnIndex("word")); String definition = cursor.getString(cursor.getColumnIndex("definition")); String trans = cursor.getString(cursor.getColumnIndex("trans")); String img = cursor.getString(cursor.getColumnIndex("img")); int id = cursor.getInt(cursor.getColumnIndex("id")); Structure struct = new Structure(word, definition, trans, img, id); struct.setWord(word); struct.setDefinition(definition); struct.setTrans(trans); struct.setImg(img); struct.setId(id); favorite.add(struct); } } private void selectList() { database = SQLiteDatabase.openOrCreateDatabase(destPath + "/md_book.db", null); Cursor cursor = database.rawQuery("SELECT * FROM main", null); while (cursor.moveToNext()) { String word = cursor.getString(cursor.getColumnIndex("word")); String definition = cursor.getString(cursor.getColumnIndex("definition")); String trans = cursor.getString(cursor.getColumnIndex("trans")); String img = cursor.getString(cursor.getColumnIndex("img")); int id = cursor.getInt(cursor.getColumnIndex("id")); Structure struct = new Structure(word, definition, trans, img, id); struct.setWord(word); struct.setDefinition(definition); struct.setTrans(trans); struct.setImg(img); struct.setId(id); list.add(struct); } } }  
  • فایل

×
×
  • اضافه کردن...