以下是我的活动的代码
import android.app.Activity;
import android.os.Bundle;
import android.support.v7.widget.ShareActionProvider;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends Activity {
private ShareActionProvider shareAction;
@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.activity_main, menu);
MenuItem item = menu.getItem(R.id.menu_settings);
shareAction = (ShareActionProvider) item.getActionProvider();
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是从ActionProvider到ShareActionProvider存在一个强制转换错误.为什么它如下所示是activity_menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_settings"
android:orderInCategory="100"
android:showAsAction="always"
android:title="@string/menu_settings"
android:actionProviderClass="android.widget.ShareActionProvider"
/>
</menu>
Run Code Online (Sandbox Code Playgroud) Android 4.0中可用的新ShareActionProvider(如果您使用的是ActionBarSherlock,则可在早期版本中使用)具有最后使用的项目显示在操作栏中的功能.无论如何要关闭它?
android actionbarsherlock android-actionbar shareactionprovider
我正在使用a ShareActionProvider并希望在顶部没有足够的空间时利用拆分的ActionBar android:uiOptions="splitActionBarWhenNarrow".
当ActionBar不需要拆分时,该操作正常:

但是,当ActionBar确实需要拆分时,ActionProvider似乎完全打破了较低的ActionBar布局.它填充顶部ActionBar下方的整个视口,并且不会显示操作本身:

有没有人能够成功地将这两个功能结合使用?
我正在尝试设置图标ShareActionProvider,需要一个纯白色而不是半透明的白色.
但是,在share_menu.xml和代码中设置不起作用.只是想知道是否有人在扩展ShareActionProvider之前已经解决了这个问题.(我正在使用actionbarsherlock)
@Override
public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
inflater.inflate(R.menu.share_menu, menu);
MenuItem actionItem = menu.findItem(R.id.share_action_provider);
ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider();
actionProvider.setShareIntent(mShareIntent);
// re-setting the icon as it's not being picked up from the menu xml file
actionItem.setIcon(R.drawable.ic_action_share);
super.onCreateOptionsMenu(menu, inflater);
}
Run Code Online (Sandbox Code Playgroud)
share_menu.xml
<item android:id="@+id/share_action_provider"
android:showAsAction="ifRoom"
android:title="@string/share_with"
android:icon="@drawable/ic_action_share"
android:actionProviderClass="com.actionbarsherlock.widget.ShareActionProvider" />
Run Code Online (Sandbox Code Playgroud)
更新:也尝试在风格中设置它,但没有快乐
<style name="Theme.MyApp" parent="Theme.Sherlock.Light">
<item name="actionModeStyle">@style/ActionModeStyle</item>
<item name="android:actionModeStyle">@style/ActionModeStyle</item>
</style>
<style name="ActionModeStyle" parent="Widget.Sherlock.ActionMode">
<item name="actionModeShareDrawable">@drawable/ic_action_share</item>
</style>
Run Code Online (Sandbox Code Playgroud) 我有一个相当大的图像URL列表,我用它来加载ViewPager使用Picasso.我需要能够通过意图(最终通过ShareActionProvider共享)为这些图像提供共享功能.从我读过的内容来看,Picasso并不是真正能够开箱即用来处理这类事情的,尽管它提供了所有必要的工具.
我在研究之前的计划是创建一个LruCache使用url作为键和位图值的简单.这种缓存将onBitmapLoaded通过Picasso的Target界面进行.每当我想要共享图像时,我都会检查位图的缓存.如果它不在那里,我将与毕加索一起取.既然我有一个缓存的位图,我会写一个文件(...这部分似乎不对,虽然我必须写一个文件来获取一个uri,对吗?)并添加文件uri到意图.
但是我看到Picasso.Builder我可以设置(并保留对我自己的缓存的引用) - /sf/answers/1298679161/.这意味着我可以Target通过正确实施hashCode和equals方法来消除习惯和混乱,以确保准确的回收,检索等.
我的问题是,毕加索如何使用这个缓存?有什么关键?有没有办法获得位图Uri而不将其写入磁盘?
以下是我的活动代码.在这里我使用支持库appcompat
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.ShareActionProvider;
import android.view.Menu;
import android.view.MenuItem;
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.activity_main, menu);
MenuItem item = (MenuItem) menu.findItem(R.id.share_options);
ShareActionProvider shareAction = (ShareActionProvider) MenuItemCompat
.getActionProvider(item);
Intent shareIntent = new Intent(Intent.ACTION_SEND)
.setAction(Intent.ACTION_SEND)
.putExtra(Intent.EXTRA_TEXT, "MobiTexter")
.setType("text/plain");
shareAction.setShareIntent(shareIntent);
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
}
以下是我的XML文件,用于菜单选项,即ShareActionProvider Widget …
我正在尝试在ActionBarSherlock中实现ShareActionProvider.
以下代码给出了这个错误:
无法从ActionProvider强制转换为ShareActionProvider
ReadingActivity.java
@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.menu2b, (Menu) menu);
menu.getItem(0).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS|MenuItem.SHOW_AS_ACTION_WITH_TEXT);
menu.getItem(1).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS|MenuItem.SHOW_AS_ACTION_WITH_TEXT);
MenuItem menuItem = menu.findItem(R.id.share);
// Get the provider and hold onto it to set/change the share intent.
ShareActionProvider shareActionProvider = (ShareActionProvider) menuItem.getActionProvider();
// Set the default share intent
shareActionProvider.setShareIntent(getDefaultShareIntent());
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
menu2b.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
...
<item android:id="@+id/share"
android:title="Share"
android:icon="@drawable/ic_share_action_bar"
android:actionProviderClass="android.widget.ShareActionProvider"/>
</menu>
Run Code Online (Sandbox Code Playgroud) java android actionbarsherlock android-actionbar shareactionprovider
我有一个EditText,它最初填充了本地数据库中的文本.当用户离开屏幕(onPause)时,更新的文本存储在本地数据库中.我还有一个ShareActionProvider(使用ActionBarSherlock).
当用户使用ShareActionProvider时,旧文本将发送到目标应用程序.当用户按下菜单项时,如何刷新通过actionprovider发送的文本?
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.share_action_provider, menu);
MenuItem actionItem = menu.findItem(R.id.menu_item_share_action_provider_action_bar);
mActionProvider = (ShareActionProvider) actionItem.getActionProvider();
mActionProvider.setShareIntent(createShareIntent());
}
private Intent createShareIntent() {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, editText.getText().toString());
return shareIntent;
}
Run Code Online (Sandbox Code Playgroud)
当用户按下菜单项时,似乎没有调用onOptionsItemSelected().所以我尝试了以下onPause(),没有运气:
@Override
public void onPause() {
super.onPause();
mActionProvider.setShareIntent(createShareIntent());
// save to db:
getActivity().saveText(editText.getText().toString());
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句:这段代码都在片段中.
android android-fragments actionbarsherlock shareactionprovider
看图.我如何隐藏图标"P",这意味着分享到Pinterest?

它们都在操作栏上,我使用ActionBarSherlock.
android actionbarsherlock android-actionbar shareactionprovider
我是工作在我老ShareAction在我ActionBar和它的工作,因为我上更新了我的包SDK Manager.我看到谷歌的这篇文档说,
要为您的活动添加"分享"操作,请
ShareActionProvider在应用栏的菜单资源中添加.例如:
而且我添加了相同的内容而不添加任何内容Icons:
<item android:id="@+id/action_share"
android:title="@string/share"
app:showAsAction="ifRoom"
app:actionProviderClass="android.support.v7.widget.ShareActionProvider"/>
Run Code Online (Sandbox Code Playgroud)
我用的是:
app:actionProviderClass="Mypackagename.ShareActionProvider"
Run Code Online (Sandbox Code Playgroud)
使用ShareActionProvider以下代码的自定义.您可以在此处查看.
我看到了一个黑客或技巧(使用ShareActionProvider-v4),自从我决定使用以来一切都很好android.support.v7.widget.ShareActionProvider.
那么,这是我目前的代码:
<item
android:id="@+id/shareac"
android:title="@string/share"
app:actionProviderClass="android.support.v7.widget.ShareActionProvider"
app:showAsAction="always" />
Run Code Online (Sandbox Code Playgroud)
我没有使用,Icon因为这里的文档说,
您不需要指定图标,因为
ShareActionProvider窗口小部件会处理自己的外观和行为.但是,如果操作在溢出菜单中结束,则需要使用android:title指定标题.
以下是我到目前为止所做的事情:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main_details, menu);
// Locate MenuItem with ShareActionProvider
MenuItem item = menu.findItem(R.id.shareac);
// Fetch and store ShareActionProvider
mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item);
Intent …Run Code Online (Sandbox Code Playgroud) android android-actionbar shareactionprovider android-studio