веб-разработчик пытается (и изо всех сил) попробовать разработку приложений для Android здесь. Я пытаюсь внедрить боковую навигацию в систему входа в систему, чтобы мой интерфейс выглядел приятнее и, как правило, придавал моему приложению более приятный вид. Проблема, которую я имею, является;
В настоящее время на MainActivity (приборная панель / домашний экран) приложения у меня есть кнопка, которая в основном выходит из системы пользователя, который я использую, с помощью следующего кода.
Button logoutBtn = findViewById(R.id.btnLogout);
logoutBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
session.logoutUser();
Intent i = new Intent(MainActivity.this, LoginActivity.class);
startActivity(i);
finish();
}
});
Пользовательский интерфейс:
Приведенный выше код работает, как и ожидалось, при выходе пользователя из системы и перенаправлении его на страницу входа / регистрации. Теперь я начинаю пытаться реализовать обнаруженную мной боковую навигацию (https://antonioleiva.com/materialize-app/)) и пытаюсь выяснить, как передать функциональность вышеуказанной кнопки элементу меню навигации, как показано ниже;
Пример боковой навигации, который я использую, имеет следующий код, который в основном представляет уведомление, чтобы показать, какой пункт меню боковой навигации выбран;
private void setupDrawerLayout() {
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
navigationView = (NavigationView) findViewById(R.id.navigation_view);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
Snackbar.make(content, menuItem.getTitle() + " pressed", Snackbar.LENGTH_LONG).show();
menuItem.setChecked(true);
drawerLayout.closeDrawers();
return true;
}
});
}
Это представляет следующее;
Если бы кто-нибудь мог дать мне какие-либо пункты, советы или помощь в том, как я могу дать опции меню функциональность кнопки выхода из системы, это было бы очень полезно, поскольку, как только я узнаю, как настроить прослушиватели щелчка / запускать части кода для пункты меню. Я могу продолжить загрузку различных действий и приступить к созданию приложения.
Заранее спасибо ТАК.
Полный код для домашнего экрана (MainActivity.java) приведен ниже;
package com.antonioleiva.materializeyourapp;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.design.widget.NavigationView;
import android.support.design.widget.Snackbar;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements
RecyclerViewAdapter.OnItemClickListener {
private SessionHandler session;
private static List<ViewModel> items = new ArrayList<>();
private DrawerLayout drawerLayout;
private View content;
private RecyclerView recyclerView;
private NavigationView navigationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
session = new SessionHandler(getApplicationContext());
User user = session.getUserDetails();
TextView dashboardText = findViewById(R.id.dashboardText);
dashboardText.setText("Welcome to gluca, " + user.getFullName() + "!");
initRecyclerView();
initFab();
initToolbar();
setupDrawerLayout();
Button logoutBtn = findViewById(R.id.btnLogout);
logoutBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
session.logoutUser();
Intent i = new Intent(MainActivity.this, LoginActivity.class);
startActivity(i);
finish();
}
});
content = findViewById(R.id.content);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
setRecyclerAdapter(recyclerView);
}
}
@Override
public void onEnterAnimationComplete() {
super.onEnterAnimationComplete();
setRecyclerAdapter(recyclerView);
recyclerView.scheduleLayoutAnimation();
}
private void initRecyclerView() {
recyclerView = (RecyclerView) findViewById(R.id.recycler);
recyclerView.setLayoutManager(new GridLayoutManager(this, 2));
}
private void setRecyclerAdapter(RecyclerView recyclerView) {
RecyclerViewAdapter adapter = new RecyclerViewAdapter(items);
adapter.setOnItemClickListener(this);
recyclerView.setAdapter(adapter);
}
private void initFab() {
findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Snackbar.make(content, "FAB Clicked", Snackbar.LENGTH_SHORT).show();
}
});
}
private void initToolbar() {
final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setHomeAsUpIndicator(R.drawable.ic_menu_black_24dp);
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
private void setupDrawerLayout() {
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
navigationView = (NavigationView) findViewById(R.id.navigation_view);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
Snackbar.make(content, menuItem.getTitle() + " pressed", Snackbar.LENGTH_LONG).show();
menuItem.setChecked(true);
drawerLayout.closeDrawers();
return true;
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
drawerLayout.openDrawer(GravityCompat.START);
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onItemClick(View view, ViewModel viewModel) {
DetailActivity.navigate(this, view.findViewById(R.id.image), viewModel);
}
}