фрагменты, связанные с панелью навигации, перекрываются и отображаются поверх текущего содержимого активности - PullRequest
0 голосов
/ 15 июня 2019

Я новичок в Android.Я разработал приложение и использую #NAVIGATION DRAWER с фрагментами.Я не пользуюсь панелью навигации и пытаюсь развернуть ее с помощью #fragments.Поскольку я хотел, чтобы в моем приложении был блок навигации, я пишу свой код в упражнении под названием «DrawerActivity», и все мои действия расширяют это действие.Это работает, и у меня нет проблем с этим.

, когда я нажимаю на каждый элемент в меню навигационной панели, он перенаправляется на фрагмент.Например, у меня есть фрагмент с именем «ProductList_Fragment», который показывает список моих продуктов?

Это тоже хорошо работает.и когда я нажимаю на каждый элемент в представленном списке в «ProductList_Fragment», создается новое действие под названием «BriefProductActivity».это работает хорошо, и до сих пор все в порядке.но когда я решаю перейти к другому элементу в панели навигации и щелкнуть по нему, новый фрагмент загружается поверх моего последнего действия.

Я хочу просто закрыть это действие, и вместо него загружается новый фрагмент, а не поверх него.
Я надеюсь, что смогу описать свою проблему.

///////DrawerActivity/////
public class DrawerActivity extends AppCompatActivity {
    protected  DrawerLayout mDrawerLayout;
    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_drawer);


        //defining fragment for navigation drawer
        final AboutUs_Fragment aboutUs_fragment=new AboutUs_Fragment();
        final HomeFragment homeFragment=new HomeFragment();
        final HelpFragment helpFragment=new HelpFragment();
        final ProductList_Fragment ProductListFragment=new ProductList_Fragment();

        //for showing the upper button
        Toolbar toolbar = (Toolbar) findViewById(R.id.mainContainer);
        setSupportActionBar(toolbar);
        ActionBar actionbar = getSupportActionBar();
        actionbar.setDisplayHomeAsUpEnabled(true);
        actionbar.setHomeAsUpIndicator(R.drawable.ic_reorder_black_24dp);


        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        final NavigationView navigationView= (NavigationView) findViewById(R.id.nav_view);
        final Menu nav_menu=navigationView.getMenu();


        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {

            public boolean onNavigationItemSelected(MenuItem menuItem) {
                // set item as selected to persist highlight
                menuItem.setChecked(true);

                // close drawer when item is tapped
                mDrawerLayout.closeDrawers();


                FragmentManager fragmentManager = getSupportFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                switch (menuItem.getItemId()){
                    case R.id.nav_exit :
                        finish();
                        break;
                    case R.id.nav_help :
                        fragmentTransaction.replace(R.id.content_frame,helpFragment);
                        fragmentTransaction.commit();
                        break;
                    case R.id.nav_about_us :
                        fragmentTransaction.replace(R.id.content_frame,aboutUs_fragment);
                        fragmentTransaction.commit();
                        break;
                    case R.id.nav_product :
                        fragmentTransaction.replace(R.id.content_frame,ProductListFragment);
                        fragmentTransaction.commit();
                        break;
                    case R.id.nav_home :
                        fragmentTransaction.replace(R.id.content_frame,homeFragment);
                        fragmentTransaction.commit();
                        break;
                }
                return true;
            }
        });

    }
    //by tapping the upper button the drawer is displayed.
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                mDrawerLayout.openDrawer(GravityCompat.START);
                return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

/////BriefProductActivity/////////
public class BriefProductActivity extends DrawerActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        LayoutInflater inflater= (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        //inflate your activity layout here!
        View contentView = inflater.inflate(R.layout.activity_brief_product, null, false);
        mDrawerLayout.addView(contentView, 0);


        //connecting to database to retrieve idioms text
        DbHelper myHelper=new DbHelper(this);
        SQLiteDatabase myDatabase = myHelper.getReadableDatabase();
        List<List<String>> textandusage=myHelper.getProductTextandUsage();

       List<String> text=new ArrayList<>();
       List<String> usage=new ArrayList<>();


      int i=0;

       while (i<(textandusage.size())){
          text.add(textandusage.get(i).get(0));
          usage.add(textandusage.get(i).get(1));
          i++;
        }


         ListView briefListView=contentView.findViewById(R.id.ls_brief);
         ProductBriefAdapter briefAdapter=new ProductBriefAdapter(this,text,usage);
         briefListView.setAdapter(briefAdapter);
    }
}


/////////////////ProductList_Fragment////////////
public class ProductList_Fragment extends Fragment {

    Activity context=getActivity();
    String[] product ={
            "first","second",
            "third","fourth",
            "fifth","sixth",
            "seventh","eighth"

    };

    Integer[] productImgId={
            R.drawable.first,R.drawable.second,
            R.drawable.third,R.drawable.fourth,
            R.drawable.fifth,R.drawable.sixth,
            R.drawable.seventh,R.drawable.eighth
            };

    public ProductList_Fragment() {
        // Required empty public constructor
    }


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment_productlist,container,false);
        ListView product_listView= (ListView)view.findViewById(R.id.listView_products);
        productListAdapter productAdapter=new productListAdapter(getContext(),product,productImgId);
        product_listView.setAdapter(productAdapter);

        product_listView.setOnItemClickListener((new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {

               TextView selectedItem=(TextView)view.findViewById(R.id.product_textView);
               String   selectedProduct=selectedItem.getText().toString();

               switch (selectedProduct){
                   case "first":
                       Intent FirstIntent=new Intent(getContext(),BriefProductActivity.class);
                       FirstIntent.putExtra("product","first");
                       startActivity(FirstIntent);
                       break;
                   case "second":

                       Intent SecondIntent=new Intent(getContext(),BriefProductActivity.class);
                       SecondIntent.putExtra("product","second");
                       startActivity(SecondIntent);
                       break;
                   case "third":
                       Intent ThirdIntent=new Intent(getContext(),BriefProductActivity.class);
                       ThirdIntent.putExtra("product","third");
                       startActivity(ThirdIntent);
                       break;
                   case "fourth":
                       Intent FourthIntent=new Intent(getContext(),BriefProductActivity.class);
                       FourthIntent.putExtra("product","fourth");
                       startActivity(FourthIntent);
                       break;
                   case "fifth":
                       Intent FifthIntent=new Intent(getContext(),BriefProductActivity.class);
                       FifthIntent.putExtra("product","fifth");
                       startActivity(FifthIntent);
                       break;
                   case "sixth":
                       Intent SixthIntent=new Intent(getContext(),BriefProductActivity.class);
                       SixthIntent.putExtra("product","sixth");
                       startActivity(SixthIntent);
                       break;
                   case "eighth":
                       Intent EighthIntent=new Intent(getContext(),BriefProductActivity.class);
                       EighthIntent.putExtra("product","eighth");
                       startActivity(EighthIntent);
                       break;
                 }
            }
        }));

        return view;
    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...