导航抽屉项目的 OnClick 事件

OnClick Event for Navigation Drawer items

我的应用程序有问题。我想制作一个具有 WebView 的应用程序,当我单击导航抽屉中的一个项目时将更改 URL。例如: Facebook 推特 Github 等等。但是我无法实现 onClick 事件。我是 Android 开发的新手。提前致谢。

这是我的 Java 文件

public class MainActivity extends AppCompatActivity {

private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mToggle;
private Toolbar mToolBar;
private WebView webView;




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

    mToolBar = (Toolbar) findViewById(R.id.nav_action_bar);
    setSupportActionBar(mToolBar);


    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mToggle = new ActionBarDrawerToggle(this,mDrawerLayout,R.string.open,R.string.close);

    mDrawerLayout.addDrawerListener(mToggle);
    mToggle.syncState();

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);


    webView = (WebView) findViewById(R.id.webView);
    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);

    webView.loadUrl("https://www.facebook.com/groups/276912206003690/");
    webView.setWebViewClient(new WebViewClient());




}



@Override
public boolean onOptionsItemSelected(MenuItem item) {


    if (mToggle.onOptionsItemSelected(item)){
            return true;
    }



    return super.onOptionsItemSelected(item);
}





@Override
public void onBackPressed() {
    if(webView.canGoBack()){
        webView.goBack();
    }else{
        super.onBackPressed();
    }

}

}

这是我的Main_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.tehedligmail.navigation_drawer.MainActivity"
    android:id="@+id/drawer_layout">


 <LinearLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical">

     <include layout = "@layout/navigation_action_bar"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"/>

     <WebView
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:id="@+id/webView">
     </WebView>

     
 </LinearLayout>

    <android.support.design.widget.NavigationView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:menu="@menu/navigation_menu"
        app:headerLayout="@layout/navigation_header"
        android:layout_gravity = "start">
    </android.support.design.widget.NavigationView>
    

</android.support.v4.widget.DrawerLayout>

这是我的菜单文件menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">


    <item
        android:id="@+id/settings"
        android:icon="@mipmap/ic_launcher"
        android:title="Settings" />

    <item
        android:id="@+id/log_out"
        android:title="Log out"
        android:icon="@mipmap/ic_launcher"/>

    <item
        android:id="@+id/google"
        android:title="google"
        android:icon="@mipmap/ic_launcher"/>

</menu>

  1. 您的 MainActivity 需要实施 NavigationView.OnNavigationItemSelectedListener 并覆盖 onNavigationItemSelected
  2. 创建 NavigationView 的实例(例如 mNavigationView)并将其绑定到您的视图。
  3. 设置监听器为mNavigationView.setNavigationItemSelectedListener(this);
  4. 覆盖onNavigationItemSelected()

该方法如下所示:

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

    if (id == R.id.settings) {
        //do something
    } else if (id == R.id.log_out){
        //do something
    } else if (id == R.id.google) {
        //do something
    }
    mDrawerLayout.closeDrawer(GravityCompat.START);
    return true;
}