簡體   English   中英

Android onOptionsItemSelected

[英]Android onOptionsItemSelected

我對此代碼感到困惑,我有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);

        }
    }


   }

您應該實現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); }
 
  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM