我正在开发一个用户看到WebView的应用程序。有一个分享FloatingActionButton来分享Facebook或Whatsapp的链接。
我正在使用导航抽屉活动。
WebView和FAB都在content_main.xml
中
在抽屉中选择每个选项时,WebView会相应地加载。
所以要获取我使用webView.getUrl()
方法的URL。但是每当我触摸共享FAB时运行应用程序,应用程序强制关闭。如果没有这种方法,我可以继续进行,但我没有网址。
我的代码是:
WebView mywebView;
FloatingActionButton fab1 = (FloatingActionButton) findViewById(R.id.fab1);
fab1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
/*Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();*/
String url;
//url=myWebView.getOriginalUrl().toString();
url=myWebView.getUrl().toString();
String message = "Text I want to share.";
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("text/plain");
share.putExtra(Intent.EXTRA_TEXT, url);
startActivity(Intent.createChooser(share, "Title of the dialog the system will open"));
}
});
提前感谢您的帮助。
答案 0 :(得分:0)
首先,尝试将匿名侦听器类中的代码提取到方法中,然后调用该方法。其次,在调用任何方法之前,请始终检查Null指针。第三,不需要调用myWebView.getUrl()。toString(),它就像调用string.toString()一样没用。
private WebView myWebView = super.findViewById(R.id.mywebViewId);
private void setFabListener() {
FloatingActionButton fab1 = (FloatingActionButton) super.findViewById(R.id.fab1);
fab1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
doOnFabPressed();
}
});
}
private void doOnFabPressed() {
if (this.myWebView != null) {
String url = this.myWebView.getUrl();
String message = "Text I want to share.";
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("text/plain");
share.putExtra(Intent.EXTRA_TEXT, url);
super.startActivity(Intent.createChooser(share, "Title of the dialog the system will open"));
}
}