Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
#1

ShareActionProvider support library - Программирование Android

22.05.2014, 21:59. Просмотров 783. Ответов 5
Метки нет (Все метки)

Возникла необходимость в ShareActionProvider на апи ниже 14. Скачал и поставил либу поддержки, как сказано в мануале
http://developer.android.com/tools/s...ary/setup.html

пробую делать так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
private ShareActionProvider myShareActionProvider;
    @Override  
    public boolean onCreateOptionsMenu(Menu menu) {  
         getMenuInflater().inflate(R.menu.share_action_provider, menu);  
         
         MenuItem menuItem_Info = menu.add(0, R.id.menu_item_share, 0, "Info");
         MenuItemCompat.setShowAsAction(menuItem_Info,MenuItem.SHOW_AS_ACTION_ALWAYS|MenuItem.SHOW_AS_ACTION_WITH_TEXT);
 
         MenuItem shareItem = menu.findItem(R.id.action_share);
         myShareActionProvider = (ShareActionProvider)MenuItemCompat.getActionProvider(shareItem);
         // myShareActionProvider  тут равен null
         setShareIntent(); 
         return true;   
    }   
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
              return super.onOptionsItemSelected(item);    
    }
    private void setShareIntent(){
          Intent intent = new Intent(Intent.ACTION_SEND);
          intent.setType("plain/text");
          intent.putExtra(Intent.EXTRA_TEXT, "Hello from android-er.blogspot.com"); 
 
          myShareActionProvider.setShareIntent(intent); 
         }
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
05-22 21:55:00.427: E/AndroidRuntime(11812): FATAL EXCEPTION: main
05-22 21:55:00.427: E/AndroidRuntime(11812): java.lang.NullPointerException
05-22 21:55:00.427: E/AndroidRuntime(11812):    at com.example.gallery.imageScreen.setShareIntent(imageScreen.java:637)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at com.example.gallery.imageScreen.onCreateOptionsMenu(imageScreen.java:608)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at android.app.Activity.onCreatePanelMenu(Activity.java:2260)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:366)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at com.android.internal.policy.impl.PhoneWindow.onKeyDownPanel(PhoneWindow.java:650)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at com.android.internal.policy.impl.PhoneWindow.onKeyDown(PhoneWindow.java:1322)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1845)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2758)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2730)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at android.view.ViewRoot.handleMessage(ViewRoot.java:1999)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at android.os.Looper.loop(Looper.java:150)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at android.app.ActivityThread.main(ActivityThread.java:4385)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at java.lang.reflect.Method.invokeNative(Native Method)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at java.lang.reflect.Method.invoke(Method.java:507)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
05-22 21:55:00.427: E/AndroidRuntime(11812):    at dalvik.system.NativeStart.main(Native Method)
в коде подписал, где myShareActionProvider null, хотя не должен быть таковым.
Мб я что-то не верно делаю?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2014, 21:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ShareActionProvider support library (Программирование Android):

Подключение темы из Support Library - Программирование Android
Здравствуйте! Решил переделать дизайн своего приложение под material. С трудом подключил библиотеку(через project structure). После...

Проясните разницу между CompatActivity, Support Library, SDK version и некоторыми другими параметрами - Программирование Android
Доброго дня. Путаюсь и не до конца понимаю смысл некоторых параметров проектов Android, типов классов, версий библиотек и других...

Android.support.v7 - Программирование Android
Народ, помогите пожалуйста. Интелиж не видит android.support.v7.app.ActionBarActivity хотя в android sdk manager support скачан, в...

Android-support-v7 ошибка - Программирование Android
Добрый вечер, устанавливал google maps API для проекта. и случайно видимо обновился support вечером все работало нормально, после...

Desing Support на eclipce - Программирование Android
Здравствуйте. Нужна помощь, не получается залить Android Design Support Library в эклипс. По советам из поиска добавляю как проект, ставлю...

Идеология com.android.support:appcompat - Программирование Android
Немного не ясно назначение данной библиотеки. Насколько я понимаю, она нужна, чтобы новые прикольные графические фичи работали на...

5
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
26.05.2014, 09:50 #2
Цитата Сообщение от spydark91 Посмотреть сообщение
я что-то не верно делаю?
Покажите что у вас в R.menu.share_action_provider
0
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
27.05.2014, 23:07  [ТС] #3
share_action_provider.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="utf-8"?>
<menu 
     xmlns:myapp="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/action_share"
        android:title="Share"
        myapp:actionProviderClass="android.support.v7.widget.ShareActionProvider"
        myapp:showAsAction="always|withText" />
    <item
        android:id="@+id/action_settings"
        myapp:showAsAction="always|withText"
        android:title="@string/action_settings"/>
    <item
        android:id="@+id/menu_item_share"
        myapp:showAsAction="always|withText"
        android:title="@string/action_settings"/>
 
</menu>
Добавлено через 1 минуту
вообще хотелось бы выводить список возможных приложений, куда делимся, не по нажатию кнопки "меню" и не во всплывающее окошечко
0
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
28.05.2014, 10:39 #4
Цитата Сообщение от spydark91 Посмотреть сообщение
share_action_provider.xml
Я попробовал ваш код, и у меня возникла та же проблема, но в итоге разобрался:
Вероятно, что ваша активити (imageScreen.java) является наследником класса Activity, а нужно наследоваться от ActionBarActivity. После этого myShareActionProvider перестанет быть всё время null'ом
1
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
02.06.2014, 12:43  [ТС] #5
Работает, но несколько не так, как задумывалось
И вариантов шаринга как то маловато(есть только те, в которых у меня есть учетная запись и нет даже блютуза. )Хотя когда захожу в стандартную галерею, например, при нажатии на кнопку "опубликовать через", вылазит оошечко с кучей возможностей публикации, даже тех мест, где у меня нет учетной записи. Вот как бы сделать такое?

Добавлено через 36 секунд
хотелось бы вообще уйти от работы с меню
и сделать именно как в приведенном мной примере

Добавлено через 7 минут
Нашел то, что хотел. Мб кому пригодится
http://androidthings.blogspot.ru/201...l#.U4w4Ovl_vW5
0
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
02.06.2014, 12:46 #6
Цитата Сообщение от spydark91 Посмотреть сообщение
И вариантов шаринга как то маловато
Количество вариантов шаринга напрямую зависит от вашего ShareIntent'а и от количества приложений которые могут этот интент обработать.
Цитата Сообщение от spydark91 Посмотреть сообщение
хотелось бы вообще уйти от работы с меню
Если не хотите меню, то ShareActionProvider вам категорически не подходит. Чтоб вылезало окошечко вам нужно проделать примерно следующее:
1) При помощи PacketManager'a получить список активити разных приложений которые могут обработать ваш интент
2) Вытащить название и иконку этих активити
3) Красиво представить это в виде окошечка
4) Реализовать логику позволяющую запускать конкретную выбранную активити, передавая ей ваш интент.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2014, 12:46
Привет! Вот еще темы с ответами:

GetSupportLoaderManager и импорт support библиотек - Программирование Android
Помогите разобраться, плз. Что-то с импортом библиотек, но что именно понять не могу. Все библиотеки, которые спрашивает на выбор -...

Android-support-v4 и настройка Eclips - Программирование Android
Перенес проект с дом. компа на рабочий, все работало нормально до определенного момента (видимо обновилось что либо где-то). Копировал на...

Для чего нужен android.support.v4 - Программирование Android
Вопрос к знатокам: почему AS по умолчанию импортирует в проект классы из библиотеки поддержки? minSdk 19 (4.4). Еще просвятите плз -...

Как подключить com.android.support:design в Eclipse - Программирование Android
Доброго дня! Недавно вышла новая библиотека com.android.support:design - вопрос как её подключить в среде Eclipse? От куда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
02.06.2014, 12:46
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru