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

مشكلة onNavigationItemSelected مع استخدام DrawerLayout

Flutter Dev

السؤال

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

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

 

احاول استخدام 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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

السلام عليكم أخي @مروان مروان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();

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 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();

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

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

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

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...