将共享操作添加到 android WebView 片段
Add share action to android WebView fragment
我知道这个问题已经被问过很多次了,我已经尝试了很多答案,但没有一个对我有用,所以这是我的问题。我有 android 使用 WebView 的应用程序,之前我在 activity 中使用 WebView,其中添加共享页面当前 URL link 的共享操作很容易,但最近更新我在片段中添加了 WebView,现在我无法在该片段中添加共享操作。因为我添加了显示在操作栏上的按钮,但它没有响应点击。以下是我的代码。
main.xml
<item android:id="@+id/menu_item_share"
android:icon="@drawable/ic_menu_share"
android:title="@string/menu_item_share"
app:showAsAction="always"/>
WebviewFragment.java
public class WebviewFragment extends Fragment {
ProgressBar bar;
WebView myWebView;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message message) {
switch (message.what) {
case 1:{
webViewGoBack();
}break;
}
}
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_webview, container, false);
;
myWebView = (WebView) v.findViewById(R.id.WebView);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.loadUrl("http://www.google.com/");
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
//improve webView performance
myWebView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
myWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
myWebView.getSettings().setAppCacheEnabled(true);
myWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
webSettings.setDomStorageEnabled(true);
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
webSettings.setUseWideViewPort(true);
webSettings.setSavePassword(true);
webSettings.setSaveFormData(true);
webSettings.setEnableSmoothTransition(true);
myWebView.setWebViewClient(new WebViewClient());
}
在 MainActivity.java
中分享操作
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
//share app content
case R.id.menu_item_share: {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, myWebView.getUrl());
startActivity(Intent.createChooser(shareIntent, "Share This Website!"));
shareIntent.setPackage("com.whatsapp");
break; //or, return true;
}
请帮助解决问题。
只有将您的工具栏注册为操作栏后,您才能使用操作栏菜单。
在 MainActivity 中:
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
您的工具栏现在应该响应菜单中的操作。
在您的片段中使用这些方法 class 并在这些方法中添加您的分享功能:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Do something that differs the Activity's menu here
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.activity_menu_item:
// Not implemented here
return false;
case R.id.fragment_menu_item:
// Do Fragment menu item stuff here
return true;
default:
break;
}
return false;
}
然后在您的 "OnCreateView()" 片段方法中添加此行:
setHasOptionsMenu(true);
希望有用!
我知道这个问题已经被问过很多次了,我已经尝试了很多答案,但没有一个对我有用,所以这是我的问题。我有 android 使用 WebView 的应用程序,之前我在 activity 中使用 WebView,其中添加共享页面当前 URL link 的共享操作很容易,但最近更新我在片段中添加了 WebView,现在我无法在该片段中添加共享操作。因为我添加了显示在操作栏上的按钮,但它没有响应点击。以下是我的代码。
main.xml
<item android:id="@+id/menu_item_share"
android:icon="@drawable/ic_menu_share"
android:title="@string/menu_item_share"
app:showAsAction="always"/>
WebviewFragment.java
public class WebviewFragment extends Fragment {
ProgressBar bar;
WebView myWebView;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message message) {
switch (message.what) {
case 1:{
webViewGoBack();
}break;
}
}
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_webview, container, false);
;
myWebView = (WebView) v.findViewById(R.id.WebView);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.loadUrl("http://www.google.com/");
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
//improve webView performance
myWebView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
myWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
myWebView.getSettings().setAppCacheEnabled(true);
myWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
webSettings.setDomStorageEnabled(true);
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
webSettings.setUseWideViewPort(true);
webSettings.setSavePassword(true);
webSettings.setSaveFormData(true);
webSettings.setEnableSmoothTransition(true);
myWebView.setWebViewClient(new WebViewClient());
}
在 MainActivity.java
中分享操作 @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
//share app content
case R.id.menu_item_share: {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, myWebView.getUrl());
startActivity(Intent.createChooser(shareIntent, "Share This Website!"));
shareIntent.setPackage("com.whatsapp");
break; //or, return true;
}
请帮助解决问题。
只有将您的工具栏注册为操作栏后,您才能使用操作栏菜单。
在 MainActivity 中:
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
您的工具栏现在应该响应菜单中的操作。
在您的片段中使用这些方法 class 并在这些方法中添加您的分享功能:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Do something that differs the Activity's menu here
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.activity_menu_item:
// Not implemented here
return false;
case R.id.fragment_menu_item:
// Do Fragment menu item stuff here
return true;
default:
break;
}
return false;
}
然后在您的 "OnCreateView()" 片段方法中添加此行:
setHasOptionsMenu(true);
希望有用!