Java 如何为导航菜单选择提供功能?
web开发人员正在尝试(并且正在努力)尝试android应用程序开发。我正试图在登录系统中实现一个侧面导航,这样可以让我的UI看起来更漂亮,并让我的应用程序感觉更好。我遇到的问题是 目前,在应用程序的MainActivity(仪表板/主屏幕)上,我有一个按钮,它基本上可以让用户从登录系统中注销,我正在使用下面的代码Java 如何为导航菜单选择提供功能?,java,android,view,onclick,navigation,Java,Android,View,Onclick,Navigation,web开发人员正在尝试(并且正在努力)尝试android应用程序开发。我正试图在登录系统中实现一个侧面导航,这样可以让我的UI看起来更漂亮,并让我的应用程序感觉更好。我遇到的问题是 目前,在应用程序的MainActivity(仪表板/主屏幕)上,我有一个按钮,它基本上可以让用户从登录系统中注销,我正在使用下面的代码 Button logoutBtn = findViewById(R.id.btnLogout); logoutBtn.setOnClickListener(new
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();
}
});
用户界面:
通过注销用户并将其重新定向到登录/注册页面,上述代码按预期工作。现在我已经开始尝试并实现我找到的一个侧导航()并且正在努力解决如何将上面按钮的功能赋予导航菜单项,如下所示
我正在使用的侧导航示例具有以下代码,该代码基本上提供了一个通知,以显示选择了哪个侧导航菜单项
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);
}
}
package com.antonioleiva.materialeyourapp;
导入android.content.Intent;
导入android.os.Build;
导入android.os.Bundle;
导入android.support.design.widget.NavigationView;
导入android.support.design.widget.Snackbar;
导入android.support.v4.view.GravityCompat;
导入android.support.v4.widget.DrawerLayout;
导入android.support.v7.app.ActionBar;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.GridLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入android.support.v7.widget.Toolbar;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView;
导入java.util.ArrayList;
导入java.util.List;
公共类MainActivity扩展了AppCompatActivity实现
RecycleServiceAdapter.OnItemClickListener{
私有会话处理程序会话;
私有静态列表项=新建ArrayList();
私人抽屉布局;
私有视图内容;
私人回收站;
私有导航视图导航视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
session=newsessionhandler(getApplicationContext());
User=session.getUserDetails();
TextView dashboardText=findViewById(R.id.dashboardText);
dashboardText.setText(“欢迎使用gluca,”+user.getFullName()+“!”);
initRecyclerView();
initFab();
initToolbar();
setupDrawerLayout();
按钮logoutBtn=findviewbyd(R.id.btnLogout);
logoutBtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
session.logoutUser();
意图i=新意图(MainActivity.this、LoginActivity.class);
星触觉(i);
完成();
}
});
内容=findViewById(R.id.content);
if(Build.VERSION.SDK\u INT
如果您将注销操作传递给一个新函数,比如logout(),并将其放入session.logoutUser()中,该怎么办;
意图i=新意图(MainActivity.this、LoginActivity.class);
星触觉(i);
完成()代码>
然后,在onOptions ItemSelected函数中添加一个案例检查
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_home) {
fragment = new HomeFragment();
title.setText(pref.getString(Constants.REGIS_FIRST_NAME, "")+" "+pref.getString(Constants.REGIS_LAST_NAME, ""));
}
if (id == R.id.nav_profile) {
fragment = new ProfileFragment();
title.setText("My Profile ");
}
if (id == R.id.nav_past) {
fragment = new PastFragment();
title.setText("Past Ceremony ");
}
else if (id == R.id.nav_logout) {
callLogout(); //logout here
}
private void callLogout() {
final Dialog dialog1;
dialog1 = new Dialog(MainActivity.this);
dialog1.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog1.setCancelable(false);
dialog1.setContentView(R.layout.logout_dilaog);
final TextView logoutTxt, yes, no;
yes = dialog1.findViewById(R.id.yes);
no = dialog1.findViewById(R.id.no);
logoutTxt = dialog1.findViewById(R.id.logoutTxt);
Log.e("NAME", "" + pref.getString("USER_NAME_LOGIN", ""));
logoutTxt.setText("Are you sure to logout ?");
yes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editor = pref.edit();
editor.clear();
editor.apply();
// utils.showtoast("Logout");
finish();
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
});
no.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog1.dismiss();
}
});
dialog1.show();
}
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:layout_marginTop="10dp"
android:gravity="center_horizontal"
android:textSize="16dp"
android:fontFamily="@font/lato_semibold"
android:id="@+id/logoutTxt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black" />
<LinearLayout
android:gravity="right"
android:layout_marginTop="15dp"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/yes"
android:layout_marginRight="15dp"
android:layout_width="90dp"
android:layout_height="30dp"
android:text="YES"
android:fontFamily="@font/lato_regular"
android:gravity="center"
android:textColor="@color/white"
android:textSize="14dp"
android:background="@drawable/ripple_btn"
/>
<TextView
android:layout_marginRight="15dp"
android:id="@+id/no"
android:layout_width="90dp"
android:layout_height="30dp"
android:text="NO"
android:fontFamily="@font/lato_regular"
android:gravity="center"
android:textColor="@color/white"
android:textSize="14dp"
android:background="@drawable/ripple_btn"
/>
</LinearLayout>