如何基于按钮单击在新屏幕上打开webview中的URL
您好我已经尝试了stackoverflow中的所有可用解决方案,但没有任何工作,单击按钮时应用程序停止。 请帮帮我。
每当我点击按钮,应用程序崩溃。 我希望应用程序在单击按钮时打开webview中的URL。 请帮帮我,非常感谢任何帮助。
任何人都可以发布修改后的代码。
activity_main.xml ------------------------------ screen3.xml ----------------------------------------------------- mainactivity.java package com.example.webview; import android.support.v7.app.ActionBarActivity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @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; } public void onClick(View v) { WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.setWebViewClient(new WebViewClient()); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true); final Context context = this; Intent intent = new Intent(context, SecondActivity.class); startActivity(intent); switch(v.getId()) { case R.id.button1: myWebView.loadUrl("http://techcrunch.com/tag/rss/"); break; case R.id.button2: myWebView.loadUrl("http://www.bestchance.org.au/"); break; default: break; } } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } } -------------------- secondactivity.java package com.example.webview; import android.webkit.WebView; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; public class SecondActivity extends ActionBarActivity { private WebView webView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.screen3); } } -------------------------------
它崩溃的原因是因为你正在调用属于另一个活动的webview
。 因此,只需将活动中的字符串传递给第二个活动,然后获取字符串并将其加载到您的webview
。 以下是如何实现它:
在第一个活动上,将onClick
方法编辑为:
public void onClick(View v) { Intent intent = new Intent(getApplicationContext(), SecondActivity.class); switch(v.getId()) { case R.id.action_bar: intent.putExtra("url", "http://techcrunch.com/tag/rss/"); startActivity(intent); break; case R.id.action_bar_spinner: intent.putExtra("url", "http://www.bestchance.org.au/"); startActivity(intent); break; default: break; } }
然后在你的SecondActivity中:
public class SecondActivity extends ActionBarActivity { private WebView myWebView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.screen3); String url = getIntent().getStringExtra("url"); myWebView = (WebView) findViewById(R.id.webview); myWebView.setWebViewClient(new WebViewClient()); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true); myWebView.loadUrl(url); } }
您可能需要在此处发布代码以查看最新情况,但如果您只是尝试获取一个webview弹出窗口,则可以启动浏览器活动来加载该页面
String url = "http://www.example.com"; Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i);
如果您需要它作为您的活动,您需要将意图传递给您的新活动并获取该url然后何时加载它
webView.loadUrl(URL);
如果问题是崩溃发布在这里的崩溃日志,那么我们可以看看出了什么问题
public void onClick(View v) { WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.setWebViewClient(new WebViewClient()); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true); final Context context = this; Intent intent = new Intent(context, SecondActivity.class); String url; switch(v.getId()) { case R.id.button1: url ="http://techcrunch.com/tag/rss/"; break; case R.id.button2: url = "http://www.bestchance.org.au/"; break; default: break; } startActivity(intent); myWebView.loadUrl(url); }
只需删除你的代码并粘贴它..你试图访问那里没有的按钮因为你开始了一个新的活动,其中布局改变了,没有按钮来调用它们。