Я новичок в 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;
}
}