اذهب إلى المحتوى

السؤال

نشر

مثلا عندي تطبيق وداخله ١٠ شاشه من نوع Fragments  وقبل ما اطلع من التطبيق اكون فاتح الشاشه رقم ٨ مثلا فبعد ما افتح التطبيق مره ثاني ابيه يفتح لي دايركت علي الصفحه الي كنت فيه قبل ما اسكر التطبيق 

Recommended Posts

  • 0
نشر
بتاريخ 10 دقائق مضت قال Abdullha Mohammad:

الحين اسوي حق كل Fragment داخله shared preferences ولا اسويه مره وحده في Main activity عشان يستديعه لما افتح التطبيق؟ 

ولا اسوي كل الأكواد داخل Main activity? 

عند كل تنقل إلى Fragment ما، علينا حفظ هذا الانتقال مثل الاحتفاظ برقمه مثلاً.

وبذلك عند فتح التطبيق نقرأ قيمة shared preff وفيه رقم آخر Fragment وبذلك نفتحه.

  • عملية تحديث رقم Fragment في كل مرة ننتقل لواحد مختلف (مكررة في كل Fragment )
  • عملية قراءة الرقم مرة واحدة عند فتح التطبيق (في Fragment الرئيسي الافتراضي) ثم فتح الFragment الهدف

عند فتح التطبيق نطبق التالي:

// قراءة اسم آخر نشاط
SharedPreferences preferences = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
String activityTag = editor.getString(getString(R.string.last_viewed_activity_tag), null);


// نشاط افتراضي في حال فتح التطبيق لأول مرة
Class initialActivityClass;

// الاختيار حسب المس النشاط
switch (activityTag) {
    case "CoolActivity":
        initialActivityClass = CoolActivity.class;
        break;
    case "WowActivity":
        initialActivityClass = WowActivity.class;
        break;
    default:
        initialActivityClass = MainActivity.class;
        break;
}

// إطلاق النشاط
Intent intent = new Intent(this, initialActivityClass);
startActivity(intent);
finish();

عند تغيير fragment فقط نعمل putString بدل get و نخزن قيمة تدل على Fragment

SharedPreferences preferences = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
String activityTag = editor.putString(R.string.last_viewed_activity_tag, "Fragment name / number" );
                        ^^^^^^^^^^^^^                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 

  • 1
نشر
بتاريخ 8 ساعات قال Abdullha Mohammad:

داخل Fragment يطلع عندي خط أحمر عند استدعاء String مره ثاني

هل قمت بتعريف page1 ضمن ملف strings؟

 

بتاريخ 9 ساعات قال Abdullha Mohammad:

ظهر عندي مشكله مايصير استدعي في بدايه التطبيق  get String 

يجب أن تعمل 

ولكن ضعها في دالة منفصلة ليكون الكود أرتب وأفضل

  • 0
نشر

يمكنك إنشاء كائن shared preference له مفتاح معين لهذه المهمة مثل lastFragment في كل مرة تنقل على صفحة جديدة تقوم بتخزين رقم الصفحة فيه عن طريق الدالة putString ، و عند بداية التطبيق تقرأ قيمة هذا المفتاح عن طريق get و تقوم بعمل التوجيه لفتح آخر صفحة تم فتحها.

  • 0
نشر
بتاريخ 17 دقائق مضت قال Wael Aljamal:

يمكنك إنشاء كائن shared preference له مفتاح معين لهذه المهمة مثل lastFragment في كل مرة تنقل على صفحة جديدة تقوم بتخزين رقم الصفحة فيه عن طريق الدالة set، و عند بداية التطبيق تقرأ قيمة هذا المفتاح عن طريق get و تقوم بعمل التوجيه لفتح آخر صفحة تم فتحها.

نفس المثال هذا او اذا عندك مثال او فيديو يشرح لي اكثر 

IMG_٢٠٢٢٠٣٢٦_١١٤٧٠٣.jpg

  • 0
نشر
بتاريخ 3 دقائق مضت قال Wael Aljamal:

صحيح نفسه هذه أبسط فكرة

الحين اسوي حق كل Fragment داخله shared preferences ولا اسويه مره وحده في Main activity عشان يستديعه لما افتح التطبيق؟ 

ولا اسوي كل الأكواد داخل Main activity? 

  • 0
نشر
بتاريخ 2 ساعات قال Wael Aljamal:

عند كل تنقل إلى Fragment ما، علينا حفظ هذا الانتقال مثل الاحتفاظ برقمه مثلاً.

وبذلك عند فتح التطبيق نقرأ قيمة shared preff وفيه رقم آخر Fragment وبذلك نفتحه.

  • عملية تحديث رقم Fragment في كل مرة ننتقل لواحد مختلف (مكررة في كل Fragment )
  • عملية قراءة الرقم مرة واحدة عند فتح التطبيق (في Fragment الرئيسي الافتراضي) ثم فتح الFragment الهدف

عند فتح التطبيق نطبق التالي:


// قراءة اسم آخر نشاط
SharedPreferences preferences = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
String activityTag = editor.getString(getString(R.string.last_viewed_activity_tag), null);


// نشاط افتراضي في حال فتح التطبيق لأول مرة
Class initialActivityClass;

// الاختيار حسب المس النشاط
switch (activityTag) {
    case "CoolActivity":
        initialActivityClass = CoolActivity.class;
        break;
    case "WowActivity":
        initialActivityClass = WowActivity.class;
        break;
    default:
        initialActivityClass = MainActivity.class;
        break;
}

// إطلاق النشاط
Intent intent = new Intent(this, initialActivityClass);
startActivity(intent);
finish();

عند تغيير fragment فقط نعمل putString بدل get و نخزن قيمة تدل على Fragment


SharedPreferences preferences = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
String activityTag = editor.putString(R.string.last_viewed_activity_tag, "Fragment name / number" );
                        ^^^^^^^^^^^^^                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 

Class initialActivityClass

 

اعمل لك كلاس جديد ولا اقدر احطه داخل Main activity 

  • 0
نشر
بتاريخ الآن قال Abdullha Mohammad:

اعمل لك كلاس جديد ولا اقدر احطه داخل Main activity 

يمكنك وضعه داخل Main activity بالطبع، المهم نستعمل get بأول تشغيل التطبيق لنعرف أي Fragment نريد عرضه، و عند نقر المستخدم و تغيير Fragment نعمل put String لتحديث قيمة آخر Fragment تمت زيارته

  • 0
نشر
بتاريخ 17 ساعات قال Wael Aljamal:

يمكنك وضعه داخل Main activity بالطبع، المهم نستعمل get بأول تشغيل التطبيق لنعرف أي Fragment نريد عرضه، و عند نقر المستخدم و تغيير Fragment نعمل put String لتحديث قيمة آخر Fragment تمت زيارته

ظهر عندي مشكله مايصير استدعي في بدايه التطبيق  get String 

IMG_20220326_213530.jpg

  • 0
نشر
بتاريخ 1 دقيقة مضت قال Abdullha Mohammad:

اخوي انت تقصد  persistence.getString

إن لم يكن لديك خلفية عن استخدامها أرجو قراءة بعض المقالات أو مشاهدة دروس في يوتيوب وسوف تتعلم الطريقة.. أنا أشرح لك الفكرة و أسلوب استخدامها قدر الإمكان.

وتأكد من تعلم أساسيات جافا بطريقة جيدة

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...