1

我对此代码感到困惑,我有6个菜单项,每个菜单项目我希望它在Web视图上加载另一个网页,但是我看不到在选择项目3时可以在哪里可以说,有人可以帮忙吗?

@Override
    public boolean onOptionsItemSelected(MenuItem item) {

        // call ActionBarDrawerToggle.onOptionsItemSelected(), if it returns true
        // then it has handled the app icon touch event

            if (actionBarDrawerToggle.onOptionsItemSelected(item)) {
        return true;
    }
        return super.onOptionsItemSelected(item);
    }

并且请不要为此虐待我,我只是需要帮助:/

我的strings.xml

<string-array name="items">
    <item>Item 1</item>
    <item>Item 2</item>
    <item>Item 3</item>
    <item>Item 4</item>
    <item>Item 5</item>
    <item>Item 6</item>
</string-array>

所以每次我点击不同的项目时,它都会做 mWebView.loadUrl("");

完整代码:

 package com.purelymean.purelymean;

 import android.os.Bundle;
 import android.app.Activity;
 import android.content.res.Configuration;
 import android.support.v4.app.ActionBarDrawerToggle;
 import android.support.v4.view.GravityCompat;
 import android.support.v4.widget.DrawerLayout;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
 import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
 import android.widget.ListView;
 import android.widget.TextView;
 import android.widget.Toast;

 public class Main extends Activity {

private String[] drawerListViewItems;
private DrawerLayout drawerLayout;
private ListView drawerListView;
private ActionBarDrawerToggle actionBarDrawerToggle;
WebView mWebView;

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

            mWebView = (WebView) findViewById(R.id.webView1);
            mWebView.getSettings().setJavaScriptEnabled(true);
            mWebView.loadUrl("http://www.google.com/");
            mWebView.setWebViewClient(new WebViewClient());

            // get list items from strings.xml
            drawerListViewItems = getResources().getStringArray(R.array.items);
            // get ListView defined in activity_main.xml
            drawerListView = (ListView) findViewById(R.id.left_drawer);

            // Set the adapter for the list view
            drawerListView.setAdapter(new ArrayAdapter<String>(this,
            R.layout.drawer_listview_item, drawerListViewItems));

            // 2. App Icon 
            drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

            // 2.1 create ActionBarDrawerToggle
            actionBarDrawerToggle = new ActionBarDrawerToggle(
            this,                  /* host Activity */
            drawerLayout,         /* DrawerLayout object */
            R.drawable.ic_drawer,  /* nav drawer icon to replace 'Up' caret */
            R.string.drawer_open,  /* "open drawer" description */
            R.string.drawer_close  /* "close drawer" description */
            );

    // 2.2 Set actionBarDrawerToggle as the DrawerListener
    drawerLayout.setDrawerListener(actionBarDrawerToggle);

    // 2.3 enable and show "up" arrow


    // just styling option
            drawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);

            drawerListView.setOnItemClickListener(new DrawerItemClickListener());


    }



    @Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    // Sync the toggle state after onRestoreInstanceState has occurred.
     actionBarDrawerToggle.syncState();
}

    @Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    actionBarDrawerToggle.onConfigurationChanged(newConfig);
}


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
               case R.id.first:
                   // do something based on first item click
                   return true;
               case R.id.second:
                   // do something based on second item
                   return true;
       }

        return super.onOptionsItemSelected(item);
    }


    private class DrawerItemClickListener implements ListView.OnItemClickListener {
        @Override
        public void onItemClick(AdapterView parent, View view, int position, long id) {
                Toast.makeText(Main.this, ((TextView)view).getText(), Toast.LENGTH_LONG).show();
                drawerLayout.closeDrawer(drawerListView);

        }
    }


   }
4

1 回答 1

2

您应该onItemClick()DrawerItemClickListener如下方式实施。该onOptionsItemSelected()方法应保持原样。

private class DrawerItemClickListener implements ListView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView parent, View view, int position, long id) {
            if(position == 0){
                // first item clicked, open url
            } else if(position == 1){
                // second item clicked, open url
            }
            drawerLayout.closeDrawer(drawerListView);

    }
}

您可以在此处找到非常详细的教程。

您可以通过给每个项目一个单独的 id 来做到这一点,然后onOptionsItemSelected()像这样检查它:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
           case R.id.first:
               // do something based on first item click
               return true;
           case R.id.second:
               // do something based on second item
               return true;
   }

    return super.onOptionsItemSelected(item);
}

于 2013-10-27T15:05:23.617 回答