Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何让我的ShareActionProvider动态提交文本(从侦听器)、查看寻呼机等_Android_Android 4.0 Ice Cream Sandwich_Actionbarsherlock_Shareactionprovider - Fatal编程技术网

Android 如何让我的ShareActionProvider动态提交文本(从侦听器)、查看寻呼机等

Android 如何让我的ShareActionProvider动态提交文本(从侦听器)、查看寻呼机等,android,android-4.0-ice-cream-sandwich,actionbarsherlock,shareactionprovider,Android,Android 4.0 Ice Cream Sandwich,Actionbarsherlock,Shareactionprovider,我正在使用Sherlock Library动作栏,它类似于ICS动作栏,我被卡住的地方是这里 @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add("Save") .setIcon(R.drawable.ic_compose).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); menu.add("Search") .setSh

我正在使用Sherlock Library动作栏,它类似于ICS动作栏,我被卡住的地方是这里

    @Override
public boolean onCreateOptionsMenu(Menu menu) {

    menu.add("Save")
    .setIcon(R.drawable.ic_compose).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

    menu.add("Search")
    .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

    SubMenu sub = menu.addSubMenu("Options");
    sub.add(0, SubMenu.NONE, 0, "First");
    sub.add(0,SubMenu.NONE, 1, "Second");
    sub.add(0, SubMenu.NONE, 2, "Three");
    sub.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

    // HERE IS WHere I AM FACING PROBLEM IN
    getSupportMenuInflater().inflate(R.menu.share_action_provider, menu);
    // Set file with share history to the provider and set the share intent.
    actionItem = menu.findItem(R.id.menu_item_share_action_provider_action_bar);
    ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider();
    actionProvider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME); //this is BRILLIANT WAY TO AVOID REPEATation
    actionProvider.setShareIntent(createShareIntent());

    return super.onCreateOptionsMenu(menu);
}

private Intent createShareIntent() {
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("text/plain");

    //THIS TEXT IS WHAT I WANT TO OBTAIN DYNAMICALLY
    shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Something goes here");
    return shareIntent;
}
每当我尝试放置
actionProvider.setShareContent(createShareIntent())在侦听器内或
actionProvider.setShareContent(createShareIntent())以外的任何位置我获取
D/View(11753):onTouchEvent:viewFlags被禁用

我希望包括这个共享操作提供者,并希望输入我自己的文本,这些文本由用户输入生成

欢迎任何意见

添加此项不起作用

    actionItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            Log.e("THIS IS NEVER CALLED", "??");
            return true;
        }
    });
如何获取正在单击的共享按钮的更新我使用的菜单如下所示:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.your_share_button_name:
        share();
        return true;

    }
}

    private void share() {
    Intent sharingIntent = new Intent(Intent.ACTION_SEND);
    sharingIntent.setType("text/plain");
    sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT,
            "your text");
    sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
            "your subject");
    startActivity(Intent.createChooser(sharingIntent, "Share using"));
}

就这些。我建议您将菜单的所有布局放在res/menu文件夹中的xml中。

我在android.support.v7.app.ActionBarActivity派生版本中遇到了类似的问题(尽管我认为这种方法应该适用于任何活动),我对PrepareOptions菜单进行了重写,并得到了您想要的效果:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider();
    if (actionProvider != null) {
        actionProvider.setShareIntent(createShareIntent());
    }
    return super.onPrepareOptionsMenu(menu);
}