Действие по щелчку панели навигации Android Studio (Java) не работает должным образомAndroid

Форум для тех, кто программирует под Android
Ответить
Гость
 Действие по щелчку панели навигации Android Studio (Java) не работает должным образом

Сообщение Гость »


index.xml

nav_header.xml

nav_drawer.xml

index_activity.java

package com.example.testagain; import static android.app.ProgressDialog.show; import android.app.Activity; import android.app.Dialog; import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.util.Log; import android.view.Gravity; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.ImageView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.view.GravityCompat; import androidx.drawerlayout.widget.DrawerLayout; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; import com.google.android.material.bottomnavigation.BottomNavigationView; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.navigation.NavigationView; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseUser; public class index_activity extends AppCompatActivity { FirebaseAuth auth; FirebaseUser user; FloatingActionButton fab; BottomNavigationView bottomNavigationView; FragmentManager fragmentManager; DrawerLayout drawerLayout; ImageView menu; LinearLayout home,settings,achievement,logout; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.index); //check login auth=FirebaseAuth.getInstance(); user=auth.getCurrentUser(); //bottom navigation bar bottomNavigationView = findViewById(R.id.bottomNavigationView); fab = findViewById(R.id.fab); //navigation drawer drawerLayout = findViewById(R.id.drawer_layout); menu = findViewById(R.id.menu); home= findViewById(R.id.bottom_home); settings = findViewById(R.id.action4); logout = findViewById(R.id.logout); achievement=findViewById(R.id.action3); menu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (drawerLayout.isDrawerOpen(GravityCompat.START)) { closeDrawer(drawerLayout); } else { openDrawer(drawerLayout); } } }); home.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(index_activity.this, "you click home", Toast.LENGTH_SHORT).show(); recreate(); } }); settings.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(index_activity.this, "you click settings", Toast.LENGTH_SHORT).show(); redirectActivity(index_activity.this,com.example.testagain.settings.class); } }); achievement.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(index_activity.this, "you click achievement", Toast.LENGTH_SHORT).show(); redirectActivity(index_activity.this,com.example.testagain.achievement.class); } }); logout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(index_activity.this, "you click logout", Toast.LENGTH_SHORT).show(); FirebaseAuth.getInstance().signOut(); Intent intent = new Intent(getApplicationContext(),login.class); startActivity(intent); finish(); } }); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { showBottomDialog(); } }); bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { int itemId = item.getItemId(); if(itemId == R.id.bottom_home){ openFragment(new HomeFragment()); } else if(itemId == R.id.distract){ openFragment(new PlanningFragment()); }else if(itemId == R.id.action3){ openFragment(new AchievementFragment()); }else if(itemId == R.id.action4){ openFragment(new SettingsFragment()); } //drawerLayout.closeDrawer(GravityCompat.START); return true; } }); } public static void openDrawer(DrawerLayout drawerLayout){ drawerLayout.openDrawer(GravityCompat.START); } public static void closeDrawer(DrawerLayout drawerLayout){ if(drawerLayout.isDrawerOpen(GravityCompat.START)) { drawerLayout.closeDrawer(GravityCompat.START); } } public static void redirectActivity(Activity activity,Class secondActivity){ Intent intent = new Intent(activity,secondActivity); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); activity.startActivity(intent); activity.finish(); } @Override protected void onPause(){ super.onPause(); closeDrawer(drawerLayout); } private void openFragment(Fragment fragment) { FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.frame_layout, fragment); fragmentTransaction.commit(); } private void showBottomDialog() { final Dialog dialog = new Dialog(this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.bottomsheetlayout); LinearLayout videoLayout = dialog.findViewById(R.id.layoutVideo); LinearLayout shortsLayout = dialog.findViewById(R.id.layoutShorts); ImageView cancelButton = dialog.findViewById(R.id.cancelButton); videoLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); Toast.makeText(getApplicationContext(),"Upload a Video is clicked",Toast.LENGTH_SHORT).show(); } }); shortsLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); Toast.makeText(getApplicationContext(),"Create a short is Clicked",Toast.LENGTH_SHORT).show(); } }); cancelButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialog.dismiss(); } }); dialog.show(); dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); dialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; dialog.getWindow().setGravity(Gravity.BOTTOM); } } on my index.xml, I can click on bottom navigation and it works. But at my navigation drawer, I can open the drawer but the option to click is not working. I have check the java code and it works by moving the on index.xml outside the relativelayout. But if I do that, the drawer could not be closed and always open. So I think is the xml position problem, but I can't found out what problem is.


Источник: https://stackoverflow.com/questions/780 ... -as-expect
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»