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

Flutter Dev

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

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

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

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

    2

كل منشورات العضو Flutter Dev

  1. @Mohamd Imran الافضل اخي ان تطلع على مشروعي كامل قد يكون السورس كود الذي سبق ورفعته ناقص او لا تضح المشكلة فيه جيدا حتى تكون المشكلة اكثر وضوح قمت بتحميل السورس كود كامل على الرابط https://gofile.io/d/259cbU
  2. شاكر لك عزيزي كثير ماشي مشكله باذن الله في انتظارك
  3. @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(); } يحدث العكس ايضا الان الجدول الاول السلايدر شو شغال بينما حين الانتقال الى الجدول الثاني السلايدر شو لا يعمل حتى نضغط على زر الهوم
  4. ربي يعطيكم الف صحه وعافيه رح اطبق وابلغكم ب النتيجة باذن الله
  5. السلام عليكم ورحمة الله وبركاته استفسار لو تكرمتو اشتغل على تطبيق يحتوى على جدولين TabLayout وكل صفحة او جدول لديه BottomNavigationView سوالي اذا كان لدي 3 ازار في BottomNavigationView طبعا الان جميع ازار BottomNavigationView تعرض صفحات TabLayout ولكن لو مثلا محتاج اعمل اخفاء لصفحات TabLayout في الزر الثاني والثالث من اصل 3 ازار في BottomNavigationView فهل يمكن عمل ذلك؟مع العلم انها سوف تستمر في الظهور في الزر الاول مرفق نسخه من مشروع مصغر يحتوى TabLayout و BottomNavigationView نموذج عن سوالي https://gofile.io/d/SLZFkk
  6. هلا بيك ي غالي اعذرني على تاخر ردي على هذا الموضوع بس لني كنت اشتغل على نقطة ثانية قمت بارفاق سورس كود مصغر يمكنك تشغيله وهو يحتوي على المشكله سوف تشاهد الاكتفي الاول او tabl1 يعمل بشكل جيد بعد اقلاع التطبيق ولكن لو قمت بتغير الى table2 ستكون الصفحة بيضا بالكامل وحتى تستيطع جلب بياناتها يجب ان تقوم بضغط على زر الهوم هذا المشكلة بتحديد طبعا هذا تحدث فقط في اول تشغيل لتطبيق بعدها حتى لو قمت بتنقل بين table1 and table2 لكن تكون المشكلة موجوده ياليت لو تكرمت تطلع على المشروع @Mohamd Imran MyApplication6.rar
  7. ما شاء الله عليك ي اخوي فعلا المشكله انحلت ربي يزيدك من واسع عمله وفضله
  8. السلام عليكم ورحمة الله وبركاته تحيه طيبه للجميع اعزائي احاول استخدام DrawerLayout لعرض الصفحات والانتقال من خلاله الىى صفحات اخرى مثل الصورة التالية المشكلة التي تواجهني في حالة استخدام DrawerLayout في اكتفتي يحتوي على TabLayout + ViewPager الـ DrawerLayout شغال ويظهر للمستخدم ويمكن مشاهدة الاختيارات من خلاله ولكن في حالة اختيار الضغط على الاختيارات لا يحدث شي صورة لتوضيح في حالة وضعت التصميم كالتالي فهو شغال مية مية وهذا نتيجة الضغط على الاختيار ولكن المطلوب عمله كالتالي : في هذا الحالة الشريط الجانبي يظهر ولكن لدى الاختيار يختفي الشريط ولا يحدث اي شي هذا كود 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
  9. هلا بيك عزيزي النتيجة كالتالي: بنسبه للاسلايد شو الوضع ك السابق الجدول الاول شغال وثاني لا
  10. السلام عليكم ورحمة الله وبركاته لدي مشكله ي اخوان انا استخدم 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% وهذا الجدول الثاني اول من اقوم بدخول له وهو يظهر ابيض فارغ
  11. @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()
  12. @Mohamd Imran ايضا لا يمكن عمل ذلك 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; } }
  13. @Mohamd Imran شاهد عزيزي انا قمت بتابع تعليماتك حسب الصور في انشاء المجلد واسميته layout2 هذا الصورة من اندرويد ستوديو : وهذا الصورة من مجلدت المشروع هذا المشكلة التي اعاني منها المجلد لا يظهر في برنامج اندرويد
  14. اذا كنت تقصد كالتالي اخي فهو لم ينجح startActivity(new Intent(PageAdapter.this, Home.class)); return null ;
  15. في مجلد res وحسب الاسم الذي اعطيه في وقت الانشاء ولكن في تطبيق اندرويد لا يظهر ولكن لو رحت للملفات من خلال متصفح الكمبيوتر ممكن اشوفه
  16. السلام عليكم ورحمة الله وبركاته انا استخدم ازار 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 كل ما حاولت اكتب الكود الانتقال تظهر لي رسالة الخطاء التالي : في هذا الحالة كيف ممكن نعمل انتقال الى هذا الاكتفتي ؟هل يوجد حل بدون تحويل الاكتفتي الى صفحة Fregment?
  17. @Mohamd Imran هلا بيك عزيزي مع الاسف انا قمت بتجربة الطريقة الذي ذكرتها انت وقمت باختيار xml resources folder ولكن بعد الانشاء والجريد يعمل مزامنة المجلد لا يظهر لدي مع مجلدات المشورع هذا المشكله التي اعاني منها مع العلم لو رحت لمجلدات المشروع من خارج االاندرويد ستوديو الفولدر يكون موجود
  18. السلام عليكم ورحمة الله وبركاته تحيه طيبه للجميع استفسار لو تكرمتو .. هل توجد طريقة يمكن من خلالها انشاء مجلدات لملفات XML في اندرويد ستوديو؟ لني حاولت ب كذا طريقة ولم يفلح الامر
  19. @Mohamd Imran والله ي خوي ان راسي دار اعذرني ازعجتك بس الموضوع يلف براس شوية من الواضح ان الكود الذي قمت بتعديله صار شغال ربي يعطيك الف عافيه اذا شفت فيه اي شي ما شغال عدل رح ابلغك باذن الله كل الشكر لك عزيزي ربي يزيدك من واسع فضله
  20. اهلا اخي @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(); } }
  21. السلام عليكم ورحمة الله وبركاته تحيه طيبه للجميع لدي استفسار لو تكرمتو اعمل على كود ارسال الاشعارات من التطبيق الى المستخدم الكود شغال ميه ميه ولكن توجد مشكله بسيطه في الامر الكود يشتغل بعد من يقوم المستخدم بالخروج من التطبيق من خلال .. 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); }
  22. @Mohamd Imran لقد فهمتك ي غالي ربي يعطيك الف صحه وعافيه يا رب والعذر والسموحه منك على الاطاله كثير ربي يقدرني وارد لك هذا الدين في يوم
×
×
  • أضف...