当我的“家庭片段活动”正在从自身调用另一个片段时,如何更新导航抽屉。 我已经在我的家庭片段活动中创建了卡片视图,因此当我在片段活动中按下卡片时,onClickListener会被调用,但是我的问题是我的导航抽屉项没有对应于该片段进行更新,因此如何在何时更新导航抽屉一个片段叫另一个片段。
HomeFragment活动
public class HomeFragment extends Fragment {
public HomeFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
((NaviActivity)getActivity()).setActionBarTitle("Home");
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_home, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
view.findViewById(R.id.home_home_fragment).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(),"You are already at Home ;)",Toast.LENGTH_SHORT).show();
}
});
view.findViewById(R.id.discussion_home_fragment).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Inflating Discussion Frag from Home Frag
Fragment someFragment = new DiscussionFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_loader, someFragment ); // give your fragment container id in first parameter
transaction.addToBackStack(null); // if written, this transaction will be added to backstack
transaction.commit();
Toast.makeText(getActivity(),"You are now in Discussion Fragment ;)",Toast.LENGTH_SHORT).show();
}
});
view.findViewById(R.id.events_home_fragment).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Inflating Events Frag from Home Frag
Fragment someFragment = new EventsFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_loader, someFragment ); // give your fragment container id in first parameter
transaction.addToBackStack(null); // if written, this transaction will be added to backstack
transaction.commit();
Toast.makeText(getActivity(),"You are now in Activity Fragment ;)",Toast.LENGTH_SHORT).show();
}
});
super.onViewCreated(view, savedInstanceState);
}
}
MainActivity
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
//set default fragment as Home Fragment
android.support.v4.app.FragmentTransaction ft =getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment_loader,new HomeFragment());
ft.commit();
navigationView.setCheckedItem(R.id.nav_home);
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
if (doubleBackToExitPressedOnce) {
super.onBackPressed();
return;
}
this.doubleBackToExitPressedOnce = true;
Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce=false;
}
}, 2000);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.navi, menu);
return true;
//Inflate the menu on share icon pressed in nav drawer
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
Toast.makeText(this,"Settings Pressed",Toast.LENGTH_SHORT).show();
}
else if(id == R.id.action_logout){
//logout from the account
progressDialog.setMessage("Please wait\tSigning you Out!");
progressDialog.show();
finish();
firebaseAuth.signOut();
Intent intent = new Intent(NaviActivity.this,LoginActivity.class);
startActivity(intent);
}
return super.onOptionsItemSelected(item);
}
//Setting title for title bar for each fragment
public void setActionBarTitle(String title){
getSupportActionBar().setTitle(title);
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_home) {
android.support.v4.app.FragmentTransaction ft =getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment_loader,new HomeFragment());
ft.commit();
} else if (id == R.id.nav_chat) {
android.support.v4.app.FragmentTransaction ft =getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment_loader,new DiscussionFragment());
ft.commit();
} else if (id == R.id.nav_events) {
android.support.v4.app.FragmentTransaction ft =getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment_loader,new EventsFragment());
ft.commit();
} else if (id == R.id.nav_about_us) {
startActivity(new Intent(NaviActivity.this,AboutUsActivity.class));
}
}
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}