0

Ich habe eine Navigationsschubfachaktivität mit Fragmenten darin, indem ich einen Fragmentcontainer verwende. Ich habe drei Fragmente darin und ich brauche eine davon mit dem Namen locate_login, um meine Navigationsschublade nicht zu enthalten.So implementieren Sie setDrawerLockMode oder deaktivieren Sie die Navigationsleiste

MainActivity.java

public class MainActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); //nav drawer 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     //Set the fragment initially 
     locate_login fragment = new locate_login(); 
     android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
     fragmentTransaction.replace(R.id.fragment_container, fragment); 
     fragmentTransaction.commit(); 

     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.setDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 

    } 

    public void onSelectFragment(View v){ //ignore this 
     Fragment newFragment; 

     if(v == findViewById(R.id.trigger)){ 
      newFragment = new locate_after(); 
     } 
     else{ 
      newFragment = new locate_before(); 
     } 

     FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
     transaction.replace(R.id.fragment_container, newFragment); 
     transaction.addToBackStack(null); 
     transaction.commit(); 
    } 


    @Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @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) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    @SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 

     if (id == R.id.nav_camera) { 
      // Handle the camera action 
     } else if (id == R.id.nav_gallery) { 

     } else if (id == R.id.nav_slideshow) { 

     } else if (id == R.id.nav_manage) { 

     } else if (id == R.id.nav_share) { 

     } else if (id == R.id.nav_send) { 

     } 

     drawer.closeDrawer(GravityCompat.START); 
     return true; 

} 

} 

Hier ist mein locate_login Fragment

public class locate_login extends Fragment{ 

    public locate_login() { 
     // Required empty public constructor 

    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.locate_login, container, false); 
     // Inflate the layout for this fragment 
     return rootView; 

    } 

} 

Ich werde es sehr zu schätzen, wenn die Antwort, da ich ein Anfänger auf Android Studio bin detailliert sein .

Antwort

0

Erstellen Sie eine Klasse für einen konstanten Parameter. Deklarieren Sie eine konstante Variable wie:

Let sagen StringConstant.java:

public static final int LOCK_DRAWER = 1; 
public static final int SHOW_DRAWER = 2; 

Wenn aus der Schublade zu navigieren, verwenden Sie ein Intent Objekt als:

Wenn Sie die Schublade, die Verwendung zeigen wollen:

intent.putExtra("SHOW_DRAWER", StringConstant.SHOW_DRAWER); 

ODER

Wenn Sie wollen nicht, die Schublade zeigen, verwenden:

intent.putExtra("SHOW_DRAWER", StringConstant.LOCK_DRAWER); 

abrufen Absicht von Ihrer fragment Klasse, sagen Sie locate_login.

int status = getActivity.getIntent().getIntExtra("SHOW_DRAWER", 0); 

Status prüfen:

if (status == String.Constant.LOCK_DRAWER){ 
    lockDrawer(); 
} 

public void lockDrawer() { 
    drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); 
} 

die Schublade zu entsperren:

public void unlockDrawer() { 
    drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); 
} 
Verwandte Themen