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

Flutter Dev

الأعضاء
  • المساهمات

    787
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    2

أجوبة بواسطة Flutter Dev

  1. @Mohamd Imran

    الافضل اخي ان تطلع على مشروعي كامل قد يكون السورس كود الذي سبق ورفعته ناقص او لا تضح المشكلة فيه جيدا حتى تكون المشكلة اكثر وضوح قمت بتحميل السورس كود كامل على الرابط 

    https://gofile.io/d/259cbU

    • أعجبني 1
  2. @Mohamd Imran

    مرحبا اخي لا اعلم اذا كنت قد اتطلعت على المشروع الذي ارفقته لك

    لكنيي قمت بتجربة التالي : قمت بوضع الكود التالي في الصفحتان وما لحظته الان ان المشكلة قد صارت العكس

    الان الصفحة الاولى السلايدر لايوت لا يظهر

    بينما الجدول الثاني السلايدر لايوت شغال 

        if (savedInstanceState == null) {
                getChildFragmentManager().beginTransaction().replace(R.id.fragment_container,
                        new FragmentHome()).commit();
            }

     

    وعند وضعه بطريقة التاليه:في table1 

     

      if (savedInstanceState == null) {
              getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                        new FragmentHome()).commit();
      }

    وفي الجدول الثاني كالتالي:

      if (savedInstanceState == null) {
                    getChildFragmentManager().beginTransaction().replace(R.id.fragment_container,
                            new FragmentHomeDrive()).commit();
                }

    يحدث العكس ايضا 

    الان الجدول الاول السلايدر شو شغال بينما حين الانتقال الى الجدول الثاني السلايدر شو لا يعمل حتى نضغط على زر الهوم 

  3. السلام عليكم ورحمة الله وبركاته

    استفسار لو تكرمتو

    اشتغل على تطبيق يحتوى على جدولين TabLayout

    وكل صفحة او جدول لديه BottomNavigationView

    سوالي اذا كان لدي 3 ازار في BottomNavigationView 

    طبعا الان جميع ازار BottomNavigationView تعرض صفحات TabLayout

    ولكن لو مثلا محتاج اعمل اخفاء لصفحات TabLayout في الزر الثاني والثالث من اصل 3 ازار في BottomNavigationView

    فهل يمكن عمل ذلك؟مع العلم انها سوف تستمر في الظهور في الزر الاول

     

    مرفق نسخه من مشروع مصغر يحتوى TabLayout و BottomNavigationView نموذج عن سوالي

     

    https://gofile.io/d/SLZFkk

     

    • أعجبني 1
  4. هلا بيك ي غالي

    اعذرني على تاخر ردي على هذا الموضوع بس لني كنت اشتغل على نقطة ثانية 

    قمت بارفاق سورس كود مصغر يمكنك تشغيله وهو يحتوي على المشكله 

    سوف تشاهد الاكتفي الاول او tabl1 يعمل بشكل جيد بعد اقلاع التطبيق ولكن لو قمت بتغير الى table2 ستكون الصفحة بيضا بالكامل وحتى تستيطع جلب بياناتها يجب ان تقوم بضغط على زر الهوم 

     

    هذا المشكلة بتحديد طبعا هذا تحدث فقط في اول تشغيل لتطبيق بعدها حتى لو قمت بتنقل بين table1 and table2 لكن تكون المشكلة موجوده 

     

    ياليت لو تكرمت تطلع على المشروع 

     

    @Mohamd Imran

    MyApplication6.rar

  5. بتاريخ 1 دقيقة مضت قال Mohamd Imran:

    السلام عليكم أخي @مروان مروان3

    في كود الجافا الخاص بك قم بتغيير التالي في ال onCreate ميثود 

    
    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            navigationView.setNavigationItemSelectedListener(this);

    إلى التالي 

    
    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            navigationView.setNavigationItemSelectedListener(this);
    navigationView.bringToFront();

    بعد ذلك أتوقع أن يعمل بدون مشاكل :) 

    ما شاء الله عليك ي اخوي فعلا المشكله انحلت 

    ربي يزيدك من واسع عمله وفضله 

     

    • أعجبني 1
  6. السلام عليكم ورحمة الله وبركاته 

    تحيه طيبه للجميع اعزائي 

     

    احاول استخدام DrawerLayout لعرض الصفحات والانتقال من خلاله الىى صفحات اخرى  مثل الصورة التالية 

    159143664793661.png

    المشكلة التي تواجهني في حالة استخدام DrawerLayout في اكتفتي يحتوي على TabLayout + ViewPager 

    الـ DrawerLayout شغال ويظهر للمستخدم ويمكن مشاهدة الاختيارات من خلاله ولكن في حالة اختيار الضغط على الاختيارات لا يحدث شي 

    صورة لتوضيح في حالة وضعت التصميم كالتالي فهو شغال مية مية 

    15914363234471.png

     

    وهذا نتيجة الضغط على الاختيار 

    159143632345412.png

     

     

    ولكن المطلوب عمله كالتالي :

    159143632349823.png

     

    في هذا الحالة الشريط الجانبي يظهر ولكن لدى الاختيار يختفي الشريط ولا يحدث اي شي 

     

     

    هذا كود xml 

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
      >
    
        <androidx.drawerlayout.widget.DrawerLayout
            android:id="@+id/drawer_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            tools:openDrawer="start">
    
            <com.google.android.material.navigation.NavigationView
                android:id="@+id/nav_view"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_gravity="start"
                android:fitsSystemWindows="true"
                app:headerLayout="@layout/nav_header_main"
                app:menu="@menu/activity_main_drawer" />
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
    
                <include layout="@layout/app_bar_main" />
    
                <com.google.android.material.tabs.TabLayout
                    android:id="@+id/tablayout"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@color/colorPrimary"
                    app:tabSelectedTextColor="@android:color/white"
                    app:tabTextColor="@android:color/black">
    
                    <com.google.android.material.tabs.TabItem
                        android:id="@+id/tabChats"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Table1" />
    
                    <com.google.android.material.tabs.TabItem
                        android:id="@+id/tabStatus"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Table2" />
    
                </com.google.android.material.tabs.TabLayout>
    
                <androidx.viewpager.widget.ViewPager
                    android:id="@+id/viewPager"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />
    
    
            </LinearLayout>
    
    
        </androidx.drawerlayout.widget.DrawerLayout>
    
    </RelativeLayout>

    وهذا كود صفحة الجافا 

     

    public class MainActivity extends AppCompatActivity
            implements NavigationView.OnNavigationItemSelectedListener {
    
        private DrawerLayout drawer;
        private TextView appBarTV;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            appBarTV = findViewById(R.id.appbar_text_view);
    
            ImageButton menuRight = findViewById(R.id.leftRight);
            menuRight.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (drawer.isDrawerOpen(GravityCompat.START)) {
                        drawer.closeDrawer(GravityCompat.START);
                    } else {
                        drawer.openDrawer(GravityCompat.START);
                    }
                }
            });
    
            NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            navigationView.setNavigationItemSelectedListener(this);
        }
    
    
    
        @SuppressWarnings("StatementWithEmptyBody")
        @Override
        public boolean onNavigationItemSelected(MenuItem item) {
            drawer.closeDrawers();
    
            int id = item.getItemId();
    
    
     if (id == R.id.nav_slideshow) {
                appBarTV.setText("Slideshow Page");
                Toast.makeText(this, "Slideshow", Toast.LENGTH_SHORT).show();
    
            } else if (id == R.id.nav_manage) {
                appBarTV.setText("Tools Page");
                Toast.makeText(this, "Tools", Toast.LENGTH_SHORT).show();
    
            } else if (id == R.id.nav_share) {
                appBarTV.setText("Share Page");
                Toast.makeText(this, "Share", Toast.LENGTH_SHORT).show();
    
            } else if (id == R.id.nav_send) {
                appBarTV.setText("Send");
                Toast.makeText(this, "Send", Toast.LENGTH_SHORT).show();
            }
    
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            drawer.closeDrawer(GravityCompat.START);
            return true;
        }
    }

     

     

    ايضا قمت بارفاق المشروع بالكامل للاتطلع عليه 

    MyApplication5.rar

    • أعجبني 1
  7. بتاريخ 3 ساعات قال Mohamd Imran:

    السلام عليكم أخي @مروان مروان3

     

    جرب  إضافة التالي إلى جملة الشرط الخاصة بال table 2 هكذا

    
     if (savedInstanceState == null) {
                 getActivity(). getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
          new FragmentHome()).commit();
    
                }

    وأعلمني بالنتيجة 

    هلا بيك عزيزي

    النتيجة كالتالي: بنسبه للاسلايد شو الوضع ك السابق الجدول الاول شغال وثاني لا

     

    • أعجبني 1
  8. السلام عليكم ورحمة الله وبركاته 

    لدي مشكله ي اخوان 

    انا استخدم tablayout ,viewPager لتقسيم الشاشة الى قسمين في اكتفتي واحد 

    في كل قسم امتلك صفحة fragment وفي كل fragment استععمل BottomNavigationView

    المشكلة الان كالتالي

    في كل fragment انا عامل في الاعلى سلايد شو لعرض الصور المتحركة 

    الان في وقت تشغيل التطبيق التطبيق يشتغل على table1 وكل شي شغال تمام فيه 

    ولكن لما اروح منتقل الى table2 السلايد شو لا يعمل يظهر بشكل صورة بيضاء او كانه مش موجود اساس 

    ولو رحت في table2 ضاغط على زر BottomNavigationView رح يظهر وقتها السلايد شو ويظل شغال لدي حتى لو رحت متنقل بين الجدول الاول والجدول الثاني 

    كل المشكله في بداية تشغيل fragment للمرة الاولى فقط 

    هل توجد طريقة لحل هذا المشكلة ؟

     

    هذا كود table1 والي هو شغال ولا توجد اي مشكلة فيه 

     if (savedInstanceState == null) {
                 getActivity(). getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
          new FragmentHome()).commit();
    
                }
                BottomNavigationView bottomNav = rootView.findViewById(R.id.bottom_navigation);
    
                BottomNavigationView bottomNavigationView = (BottomNavigationView)rootView. findViewById(R.id.bottom_navigation);
                bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
                    @Override
                    public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
                        Fragment selectedFragment = null;
    
                        switch (menuItem.getItemId()) {
                            case R.id.nav_home:
                          
                                selectedFragment = new CategoryMani();
                                break;
                            case R.id.nav_favorites:
                                selectedFragment = new FragmentHome();
    
                                break;
                            case R.id.nav_search:
                                selectedFragment = new FragmentListAll();
                                break;
                          
                        }
                   getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, selectedFragment).commit();
                        return true;
                       
                    }
                });

    وهذا كود table2 والذي هو يحتوي على المشكلة 

    if (savedInstanceState == null) {
    
    
                    }
    
                        BottomNavigationView bottomNav = rootView.findViewById(R.id.bottom_navigation);
    
                        BottomNavigationView bottomNavigationView = (BottomNavigationView) rootView.findViewById(R.id.bottom_navigation);
                        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
                            @Override
                            public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
                                Fragment selectedFragment = null;
    
                                switch (menuItem.getItemId()) {
                                    case R.id.nav_home:
                                        selectedFragment = new TablesOderLIst();
    
                                        break;
                                    case R.id.nav_favorites:
                                        selectedFragment = new FragmentHome();
    
                                        break;
                                    case R.id.nav_search:
                                        selectedFragment = new FragmentProfile();
                                        break;
                                    case R.id.nav_s:
                                        selectedFragment = new AdminHome();
                                        break;
                                }
                                getChildFragmentManager().beginTransaction().replace(R.id.fragment_container,
                                        selectedFragment).commit();
                                return true;
                           
                            }
                        });

     

     

    طبعا انا حاولت احل هذا المشكلة وعلى ما يبدو المشكلة في الكود التالي :

                    if (savedInstanceState == null) {
    
    
                    }

    على حسب ما فهمت ولكني لم استطع ايجاد الحل 

     

     

    تصميم السلايد شو كالتالي لكل الصفحتين  

     

    <androidx.coordinatorlayout.widget.CoordinatorLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/white"
                android:fitsSystemWindows="false">
    
    
                <com.google.android.material.appbar.AppBarLayout
                    android:layout_width="match_parent"
                    android:layout_height="152dp"
                    android:fitsSystemWindows="true"
                    android:theme="@style/Theme.AppCompat.DayNight.DarkActionBar">
    
                    <com.google.android.material.appbar.CollapsingToolbarLayout
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:layout_gravity="center"
                        android:background="@color/white"
                        android:fitsSystemWindows="true"
                        app:expandedTitleGravity="top"
                        app:expandedTitleMarginEnd="64dp"
                        app:expandedTitleMarginStart="48dp"
                        app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
    
    
                        <LinearLayout
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            android:layout_centerHorizontal="true"
                            android:gravity="center">
    
                            <androidx.cardview.widget.CardView
                                android:layout_width="match_parent"
                                android:layout_height="match_parent"
                                android:layout_centerInParent="true">
    
                                <com.smarteist.autoimageslider.SliderLayout
                                    android:id="@+id/Slider"
                                    android:layout_width="match_parent"
                                    android:layout_height="match_parent"
                                    android:layout_alignParentTop="true" />
    
                            </androidx.cardview.widget.CardView>
    
    
                        </LinearLayout>
    
    
                    </com.google.android.material.appbar.CollapsingToolbarLayout>
    
    
                </com.google.android.material.appbar.AppBarLayout>

    وهذا توضيح للمشكلة وللفكره ايضا 

     

    هذا الجدول الاول وهو شغال 100%

    159134163042271.png

     

    وهذا الجدول الثاني اول من اقوم بدخول له وهو يظهر ابيض فارغ 

    159134163043972.png

    • أعجبني 1
  9. @Mohamd Imran

     

    اصبح الكود الصفحة كالتالي 

    public class PageAdapter extends FragmentPagerAdapter {
        private static Context mContext;
        private int numOfTabs;
        PageAdapter(Context context, FragmentManager fm, int numOfTabs) {
            super(fm);
            this.mContext = context;
            this.numOfTabs = numOfTabs;
        }
    
    
    
       
        @Override
        public Fragment getItem(int position) {
            switch (position) {
                case 0:
                    return new MHome();
                case 1:
                    Intent intent = new Intent(this.mContext, Home.class);
               
              mContext. startActivity(intent);
      
    
                case 2:
                    return new CallFragment();
                default:
                    return null;
            }
        }
    
        @Override
        public int getCount() {
            return numOfTabs;
        }
    }

    ولكن في الصفحة الاساسيه ظهر خطاء في السطر التالي 

    pageAdapter = new PageAdapter(getSupportFragmentManager(), tabLayout.getTabCount());

    الخطاء هو 

    'PageAdapter(android.content.Context, androidx.fragment.app.FragmentManager, int)' in 'com.example.myapplication.MainTable.PageAdapter' cannot be applied to '(androidx.fragment.app.FragmentManager, int)'

    بتحديد في كلمة getSupportFragmentManager()

    • أعجبني 1
  10. @Mohamd Imran

    ايضا لا يمكن عمل ذلك 

     

    15911298479121.png

     

     

     

    public class PageAdapter extends FragmentPagerAdapter {
    
        private int numOfTabs;
    
        PageAdapter(FragmentManager fm, int numOfTabs) {
            super(fm);
            this.numOfTabs = numOfTabs;
        }
    
        @Override
        public Fragment getItem(int position) {
            switch (position) {
                case 0:
                    return new MHome();
                case 1:
    
                    Intent i = new Intent(getActivity(), Home.class);
                    startActivity(i);
                    ((Activity) getActivity()).overridePendingTransition(0, 0);
    
                   // return new StatusFragment();
                   // startActivity(new Intent(PageAdapter.this, Home.class));
                 //   return null ;
    
                case 2:
                    return new CallFragment();
                default:
                    return null;
            }
        }
    
        @Override
        public int getCount() {
            return numOfTabs;
        }
    }

     

    • أعجبني 1
  11. @Mohamd Imran

    شاهد عزيزي انا قمت بتابع تعليماتك حسب الصور في انشاء المجلد واسميته layout2

     

    هذا الصورة من اندرويد ستوديو :

    159112955583491.png

     

    وهذا الصورة من مجلدت المشروع

     

    159112965676184.png

     

    هذا المشكلة التي اعاني منها المجلد لا يظهر في برنامج اندرويد

     

    • أعجبني 1
  12. بتاريخ 10 دقائق مضت قال Mohamd Imran:

    مرحبا @مروان مروان3

    المجلد يظهر في مجلد res في مجلدات المشروع  تفقده بإسم xml 

    وبخصوص 

    أين يكون موجود أقصد في أي مسار ؟

    في مجلد res وحسب الاسم الذي اعطيه في وقت الانشاء 

    ولكن في تطبيق اندرويد لا يظهر 

    ولكن لو رحت للملفات من خلال متصفح الكمبيوتر ممكن اشوفه 

    • أعجبني 1
  13. السلام عليكم ورحمة الله وبركاته 

    انا استخدم  ازار Bottom Navigation Bar في الصفحة الاساسيه لمشروعي 

    لدي 3 ازار وكل زر مرتبط ب صفحة Fragment  من خلال صفحة الادبتر التاليه :

    public class PageAdapter extends FragmentPagerAdapter {
    
        private int numOfTabs;
    
        PageAdapter(FragmentManager fm, int numOfTabs) {
            super(fm);
            this.numOfTabs = numOfTabs;
        }
    
        @Override
        public Fragment getItem(int position) {
            switch (position) {
                case 0:
                    return new FragmentHome();
                case 1:
                    return new StatusFragment();
                case 2:
                    return new CallFragment();
                default:
                    return null;
            }
        }
    
        @Override
        public int getCount() {
            return numOfTabs;
        }
    }

     

     

     الان لدي مشكلة انا احتاج ان انتقال من خلال الزر الى صفحة activity وليس Fragment 

    كل ما حاولت اكتب الكود الانتقال تظهر لي رسالة الخطاء التالي  :

    159112388176511.png

    في هذا الحالة كيف ممكن نعمل انتقال الى هذا الاكتفتي ؟هل يوجد حل بدون تحويل الاكتفتي الى صفحة Fregment?

    • أعجبني 1
  14. @Mohamd Imran

    هلا بيك عزيزي

    مع الاسف انا قمت بتجربة الطريقة الذي ذكرتها انت وقمت باختيار 

    xml resources folder ولكن بعد الانشاء والجريد يعمل مزامنة المجلد لا يظهر لدي مع مجلدات المشورع هذا المشكله التي اعاني منها 

    مع العلم لو رحت لمجلدات المشروع من خارج االاندرويد ستوديو الفولدر يكون موجود 

    • أعجبني 1
  15. @Mohamd Imran

    والله ي خوي ان راسي دار اعذرني ازعجتك بس الموضوع يلف براس شوية 

    من الواضح ان الكود الذي قمت بتعديله صار شغال ربي يعطيك الف عافيه اذا شفت فيه اي شي ما شغال عدل رح ابلغك باذن الله كل الشكر لك عزيزي ربي يزيدك من واسع فضله

    • أعجبني 1
  16. اهلا اخي @Mohamd Imran

    الان اصبح شكل الكلاس سيرفس لدي كالتالي 

    public class MyService extends Service {
        public NotificationManagerCompat notificationManager;
        String id;
        App app;
        public MyService() {
        }
    
        @Override
        public void onCreate(){
            app = (App) getApplicationContext();
            id= String.valueOf(app.getTotal_threads());
            Log.i(TAG,"test"+ id.toString());
            super.onCreate();
    
        }
    
        @Override
        public int onStartCommand(Intent intent,int flags,int startId){
            Toast.makeText(this, "Start myServis", Toast.LENGTH_LONG).show();
            run_loop();
            return START_STICKY;
        }
    
        public void run_loop(){
            String url =  "http://00000000/testnet/android_register_login/ShowAllData.php";
            JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                    new Response.Listener<JSONObject>() {
                        @Override
                        public void onResponse(JSONObject response) {
                            try {
                                JSONArray jsonArray = response.getJSONArray("data");
                                JSONObject hit = jsonArray.getJSONObject(0);
                                String id = hit.getString("id");
                                int lastThread = Integer.parseInt(String.valueOf(id));
                                JSONObject jsonObject = null;
                                Toast.makeText(MyService.this, lastThread + "", Toast.LENGTH_SHORT).show();
                                if (app.getTotal_threads() < lastThread) {
                                    app.setTotal_threads(lastThread);
                                    Notification notification = new NotificationCompat.Builder(MyService.this, CHANNEL_1_ID)
                                            .setSmallIcon(android.R.drawable.ic_popup_reminder)
                                            .setContentTitle("title")
                                            .setContentText("message")
                                            .setAutoCancel(true)
                                            .setPriority(NotificationCompat.PRIORITY_HIGH)
                                            .setCategory(NotificationCompat.CATEGORY_MESSAGE)
                                            .build();
    
                                    notificationManager.notify(1, notification);
    
                                }
                            } catch(JSONException e){
                                e.printStackTrace();
                            }
    
                        }
                    }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    error.printStackTrace();
                }
            });
    
    
            RequestQueue requestQueue = Volley.newRequestQueue(this);
            requestQueue.add(request);
    
    
            Handler handler=new Handler();
            handler.postDelayed(new Runnable(){
                @Override
                public void run() {
                 run_loop();
                }
            },10000);
    
        }
    
    
    
        @Override
        public void onDestroy(){
            Toast.makeText(this, "Stopmyservci", Toast.LENGTH_LONG).show();
           super.onDestroy();
        }
    
        @Override
        public IBinder onBind(Intent intent) {
            // TODO: Return the communication channel to the service.
            throw new UnsupportedOperationException("Not yet implemented");
        }
    }

    وصفحة    home  كالتالي 

     

    public class Home extends AppCompatActivity {
        
       
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.home);
        }
    
    
    
    
    
        private boolean isMyServiceRunning(Class<?> serviceClass) {
            ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
            for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
                if (serviceClass.getName().equals(service.service.getClassName())) {
                    return true;
                }
            }
            return false;
        }
    
        public void onBackPressed() {
            if(!isMyServiceRunning(MyService.class)){
                Intent sr =new Intent(this, MyService.class);
                startService(sr);
            }
            Toast.makeText(this, "Exit", Toast.LENGTH_SHORT).show();
            finish();
    
            super.onBackPressed();
        }
    
        
    
    }

     

     

     

     

    • أعجبني 1
  17. السلام عليكم ورحمة الله وبركاته

    تحيه طيبه للجميع

    لدي استفسار لو تكرمتو

    اعمل على كود ارسال الاشعارات من التطبيق الى المستخدم الكود شغال ميه ميه ولكن توجد مشكله بسيطه في الامر 

    الكود يشتغل بعد من يقوم المستخدم بالخروج من التطبيق من خلال ..

     

        public void onBackPressed() {
            Intent sr =new Intent(this, MyService.class);
            startService(sr);
            Toast.makeText(this, "Exit", Toast.LENGTH_SHORT).show();
            finish();
            run_loop();
            super.onBackPressed();
        }

    المشكله انه كل ما خرج من التطبيق يشاهد اخر اشعار وصله من جديد او السيرفر يرجع يرسل له اشعار هو سبق وتم ارساله للمستخدم يعني السيرفر يعمل تكرار .. المفترض المستخدم من يوصله  الاشعار لمره واحده لا  يوصله من جديد لنفس الاشعار كيف يمكن حل هذا المشكله لو تكرمتو بحيث انه الاشعار الجديد يصل للمستخدم لمره واحده فقط وليس كل ما دخل التطبيق وخرج يحصل على اشعار باخر رسالة وصلته او اخر موضوع ..

    كود السيرفر ..

    public class MyService extends Service {
    
    
    
    
    
        public MyService() {
        }
    
        @Override
        public void onCreate(){
            super.onCreate();
    
        }
    
        @Override
        public int onStartCommand(Intent intent,int flags,int startId){
            Toast.makeText(this, "Start myServis", Toast.LENGTH_LONG).show();
        //    run_loop();
            return START_STICKY;
        }
    
    
    
    
        @Override
        public void onDestroy(){
            Toast.makeText(this, "Stopmyservci", Toast.LENGTH_LONG).show();
           super.onDestroy();
        }
    
        @Override
        public IBinder onBind(Intent intent) {
            // TODO: Return the communication channel to the service.
            throw new UnsupportedOperationException("Not yet implemented");
        }
    }

    كود استدعاء الاشعار ..

     

      public void run_loop(){
            String url =  "http://00000000/testnet/android_register_login/ShowAllData.php";
            JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                    new Response.Listener<JSONObject>() {
                        @Override
                        public void onResponse(JSONObject response) {
                            try {
                                JSONArray jsonArray = response.getJSONArray("data");
                                    JSONObject hit = jsonArray.getJSONObject(0);
                                    String id = hit.getString("id");
                                    int lastThread = Integer.parseInt(String.valueOf(id));
                                    JSONObject jsonObject = null;
                                    Toast.makeText(MainActivtiy.this, lastThread + "", Toast.LENGTH_SHORT).show();
                                    if (app.getTotal_threads() < lastThread) {
                                        app.setTotal_threads(lastThread);
                                        Notification notification = new NotificationCompat.Builder(MainActivtiy.this)
                                                .setSmallIcon(android.R.drawable.ic_popup_reminder)
                                                .setContentTitle("title")
                                                .setContentText("message")
                                                .setAutoCancel(true)
                                                .setPriority(NotificationCompat.PRIORITY_HIGH)
                                                .setCategory(NotificationCompat.CATEGORY_MESSAGE)
                                                .build();
    
                                        notificationManager.notify(1, notification);
    
                                }
                                } catch(JSONException e){
                                    e.printStackTrace();
                                }
    
                        }
                    }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    error.printStackTrace();
                }
            });
    
    
            RequestQueue requestQueue = Volley.newRequestQueue(this);
            requestQueue.add(request);
    
    
            Handler handler=new Handler();
            handler.postDelayed(new Runnable(){
                @Override
                public void run() {
                    run_loop();
                }
            },10000);
    
        }

     

    • أعجبني 1
×
×
  • أضف...