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

كيف احفظ Fragment او activity الي كنت فيه وارجع له بعد فتح التطبيق

Abdullha Mohammad

السؤال

مثلا عندي تطبيق وداخله ١٠ شاشه من نوع 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
بتاريخ منذ ساعة مضت قال Abdullha Mohammad:

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

IMG_20220326_213530.jpg

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

IMG_20220326_213806.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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...