2013-10-22 36 views
0

Goooood傍晚时分。我有一个webview加载特定的网页。用户然后可以选择菜单,然后导航到其他两个指定页面。问题是,后两页将无法加载。我无法理解为什么,并希望得到一些帮助。谢谢。浏览WebView中的多个页面上的菜单选择

public class News extends Activity{ 
WebView mgebview; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.news); 
mgebview = (WebView) findViewById(R.id.webview); 
    mgebview.getSettings().setJavaScriptEnabled(true); 
    mgebview.loadUrl("http://goo.gl/rQp3tF"); 

    mgebview.setWebViewClient(new WebViewClient()); 


} @Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    super.onCreateOptionsMenu(menu); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.newschoices, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    switch(item.getItemId()){ 
    case R.id.bookmark: 
     Intent addContact = new Intent(this, BookGoogle.class); 
      startActivity(addContact); 
      break; 
    case R.id.dlrnews: 
     //Intent dlr = new Intent (this, DlrNews.class); 
     //startActivity(dlr); 
     mgebview = (WebView) findViewById(R.id.webview); 
     mgebview.getSettings().setJavaScriptEnabled(true); 
     mgebview.loadUrl("www.racingblog.com"); 
     mgebview.setWebViewClient(new WebViewClient()); 
     break; 
    case R.id.gtplanetnews: 
     mgebview = (WebView) findViewById(R.id.webview); 
     mgebview.getSettings().setJavaScriptEnabled(true); 
     mgebview.loadUrl("www.gtplanet.new"); 
     mgebview.setWebViewClient(new WebViewClient()); 
     break; 
    } 
    return super.onOptionsItemSelected(item); 
} 

}

回答

2

它不工作的原因是因为你没有返回一个布尔值!尝试使用此代码:

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    switch(item.getItemId()){ 
    case R.id.bookmark: 
     Intent addContact = new Intent(this, BookGoogle.class); 
      startActivity(addContact); 
      return true; 
      break; 
    case R.id.dlrnews: 
     mgebview.loadUrl("www.racingblog.com"); 
     return true; 
     break; 
    case R.id.gtplanetnews: 
     mgebview.loadUrl("www.gtplanet.new");z 
     return true; 
     break; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

返回true可以让我们在这里“消费”它。

作为参考:http://developer.android.com/reference/android/app/Activity.html#onOptionsItemSelected%28android.view.MenuItem%29

样品活动我刚创建,它的工作原理使用Nexus 7:

包com.example.test;

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class MainActivity extends Activity { 
    private WebView myWebView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     myWebView = (WebView) findViewById(R.id.webView1); 
     myWebView.setWebViewClient(new WebViewClient()); 
     myWebView.getSettings().setJavaScriptEnabled(true); 
     myWebView.loadUrl("https://www.google.com/"); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch(item.getItemId()){ 
     case R.id.action_settings: 
      myWebView.loadUrl("http://stackoverflow.com/questions/19508436/browse-multiple-pages-in-webview-on-menu-selection/19508494#19508494"); 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 

    } 
} 

清单确保你补充:<uses-permission android:name="android.permission.INTERNET"></uses-permission>

R.layout.activity_main:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <WebView 
     android:id="@+id/webView1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" /> 

</RelativeLayout> 
+0

感谢您的快速反应!我复制了你的代码,删除了“Break”因为返回后没有必要,我得到了相同的结果......就好像没有连接 – TheRedStig

+0

您是否在使用仿真器作为实际设备? – horvste

+0

Nexus 4.在WebView中,它显示与我处于飞行模式时相同的屏幕。请记住,它会正确显示开始页面,原始加载的页面。 – TheRedStig

相关问题