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

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

Войти
Регистрация
Восстановить пароль
 
CollSpack
7 / 7 / 0
Регистрация: 21.01.2013
Сообщений: 55
#1

Как реализовать функцию "share via" в моем случае? - Программирование Android

27.06.2013, 20:02. Просмотров 826. Ответов 3
Метки нет (Все метки)

Учил программирование для андроида, решил потренироваться написав свою программу, но процес зашел слишком далеко, и встал вопрос об добавлении функции (поделиться через смс/фейсбук/твиттер/итд), а затем выложить в маркет.
Пример моей программы (сожержит по 2 из 60+ кнопок c именами и по 2 дочерних из 2000+ кнопок с фразами):
Главный экран AuthorList.java:
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
27
28
29
30
31
32
33
34
35
36
37
//Обьявление кнопок:
    Button agafon, anaharsis; 
//Строка содержит имя автора для передачи не следующий экран:
    public String strWhoIsSelected="lol";
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_author_list);
        
        
    //связать кнопки Button в *.java c элементами Button в *.XML
    agafon = (Button) findViewById(R.id.agafon);
    anaharsis = (Button) findViewById(R.id.anaharsis);
 
//инициализация обработчика нажатий
        OnClickListener oclAuthorChoise = new OnClickListener() {
            @Override
            //исполняемый код при нажатии
            public void onClick(View v) {
                //Определяем нажатую кнопку и переходим в новый activity с фразами по автору+
                Intent switchToPVC = new Intent(AuthorList.this, PreViewCitations.class);
                switch (v.getId()) {
                case R.id.agafon:
                    strWhoIsSelected="agafon";
                    switchToPVC.putExtra("WhoIsSelected", strWhoIsSelected);
                    startActivity(switchToPVC);
                    break;
                case R.id.anaharsis:
                    strWhoIsSelected="anaharsis";
                        switchToPVC.putExtra("WhoIsSelected", strWhoIsSelected);
                    startActivity(switchToPVC);
                    break;
 
//Присвоить обработчик кнопкам
        agafon.setOnClickListener(oclAuthorChoise);
        anaharsis.setOnClickListener(oclAuthorChoise);
Второй экран PreViewCitations.java
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
//Принять значение strWhoIsSelected
    Intent getDataAL = getIntent();
    String strWhoIsSelected = getDataAL.getStringExtra("WhoIsSelected");
//Найти linearLayout экрана
    LinearLayout llPreViewList;
    llPreViewList = (LinearLayout) findViewById(R.id.llpreviewlist);
//Параметры кнопок
    LinearLayout.LayoutParams lParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
 
 
//На основе выбранного автора WhoIsSelected построить кнопки с текстом
//////////////////////////
    if (strWhoIsSelected.equals("agafon")){
        //1я цитата
        Button agafon_1 = new Button(this);agafon_1.setText(R.string.agafon_1);llPreViewList.addView(agafon_1, lParams);
        //2я цитата
        Button agafon_2 = new Button(this);agafon_2.setText(R.string.agafon_2);llPreViewList.addView(agafon_2, lParams);
    }
/////////////////////////
    else if (strWhoIsSelected.equals("anaksagor")){
        Button anaksagor_1 = new Button(this);anaksagor_1.setText(R.string.anaksagor_1);llPreViewList.addView(anaksagor_1, lParams);
        Button anaksagor_2 = new Button(this);anaksagor_2.setText(R.string.anaksagor_2);llPreViewList.addView(anaksagor_2, lParams);
    }
// СЮДА НУЖНО ПРИКОДИТЬ SHARE VIA
Кнопок с цитатами очень много и в разных количествах для разных авторов (от 1 до 277 цитат), поэтому я выбрал программное создание кнопок.

XML файлы (обрезаны для примера):
Кликните здесь для просмотра всего текста

1й экран:
XML
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".AuthorList" >
 
    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        
        android:orientation="vertical" >
 
        <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="@string/spisok_avtorov"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="30sp" />
 
    </LinearLayout>
 
    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/linearLayout1"
        android:layout_marginTop="20dp" >
 
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="vertical" >
 
            <TextView
                android:id="@+id/drevnie_greki"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="left|center"
                android:text="@+string/drevnie_greki"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textSize="20sp"
                android:textStyle="bold" />
 
            <Button
                android:id="@+id/agafon"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@+string/num_name_agafon"/>
 
            <Button
                android:id="@+id/anaksagor"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@+string/num_name_anaksagor" />
            
        </LinearLayout>
 
    </ScrollView>
 
</RelativeLayout>
2й экран
XML
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/background" >
 
    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp" >
 
        <LinearLayout
            android:id="@+id/llpreviewlist"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
 
            <TextView
                android:id="@+id/author_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:text="@+string/imya_avtora"
                android:textSize="20sp"
                android:textStyle="bold" />
            
            <TextView
                android:id="@+id/author_info"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@+string/avtor_info"
                android:textStyle="italic" />
 
            <TextView
                android:id="@+id/textView1"
                android:layout_width="match_parent"
                android:layout_height="20dp"
                android:text="@+string/space"
                android:textAppearance="?android:attr/textAppearanceSmall" />
 
 
        </LinearLayout>
    </ScrollView>
 
</RelativeLayout>
strings.xml
XML
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="name_agafon">Агафон</string>
<string name="agafon_1">Ведь только одного и богу не дано:\nНе бывшим сделать то, что было сделано.</string>
<string name="agafon_2">Вероятно и то, что много происходит невероятного.</string>
 
<string name="name_anaksagor">Анаксагор Клазоменский</string>
<string name="anaksagor_1">Все содержится во всем. (Вариант: Во всем содержится доля всего.)</string>
<string name="anaksagor_2">Есть два урока смерти: время до рождения и сон.</string>


Вот скриншоты работающей программы:
Кликните здесь для просмотра всего текста




Как сделать, чтобы при нажатии на кнопку-цитату можно было отправить соответствующий ей текст по СМС, в Твиттер, Фейсбук, Вконтакт и другие соц.сети?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2013, 20:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как реализовать функцию "share via" в моем случае? (Программирование Android):

Как сделать unregisterReceiver в моем случае? - Программирование Android
вот так я регистрирую ресивер для отправки SMS: getActivity().registerReceiver(new BroadcastReceiver() { @Override ...

Как реализовать добавление композиции в "Избранное"? - Программирование Android
Всем привет! Такой вопрос ,у меня есть список ListView и в этом списке есть мелодии,как можно реализовать добавления композиции в список...

Как прикрутить "свой браузер" к странице - "фрагмент" - Программирование Android
здравствуйте. все, уже голову сломал. не соображаю совсем. не получается прикрутить код браузера к странице fragments.выводиться должно на-...

Как "превратить" string "6.971245e-001" во float? - Программирование Android
Число конечно пример

Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" - Программирование Android
Ребят, всем привет! накидайте какие-нить идеи по реализации ситуация такая есть таблицы - &quot;списки_жанров&quot;, &quot;фильмы&quot;, &quot;режиссеры&quot; мне...

Ошибка "Unknown method "e" of "org.apache.commons.logging.Log" - Программирование Android
Unknown method 'e' of 'org.apache.commons.logging.Log' package com.mycompany.myapp; import android.widget.*; import...

3
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
27.06.2013, 23:49 #2
используйте списки вместо кучи кнопок.

шаринг - http://developer.android.com/training/sharing/send.html
1
CollSpack
7 / 7 / 0
Регистрация: 21.01.2013
Сообщений: 55
28.06.2013, 15:28  [ТС] #3
Цитата Сообщение от V0v1k Посмотреть сообщение
используйте списки вместо кучи кнопок.

шаринг - http://developer.android.com/training/sharing/send.html
Спс за подсказки. Просто я только начал учить андроид, до этого учил С++ и не особо было времени разбираться с STL в java. В следующих версиях буду использовать списки.

Добавлено через 2 часа 27 минут
Помогите выявить ошибку. Я сдалал таким образом:
Кликните здесь для просмотра всего текста

Вырезка из кода:
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
27
28
29
30
31
32
33
//Функция передающая текст
public void vfShareQuote (String textToShare){
    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_TEXT, textToShare);
    sendIntent.setType("text/plain");
    startActivity(sendIntent);
}
 
//2 кнопки-цитаты
Button agafon_1 = new Button(this);agafon_1.setText(R.string.agafon_1);llPreViewList.addView(agafon_1, lParams);
Button agafon_2 = new Button(this);agafon_2.setText(R.string.agafon_2);llPreViewList.addView(agafon_2, lParams);
 
//обработчик share via
OnClickListener oclShareQuote = new OnClickListener() {
    @Override
    public void onClick(View v) {
//Задать текст на основе выбранной кнопки и отправить его функции vfShareQuote
    switch (v.getId()) {
    case R.string.agafon_1:
        //ИмяАвтора:
        //Цитата
        vfShareQuote(getResources().getText(R.string.name_agafon)+":\n"+getResources().getText(R.string.agafon_1));
        break;
    case R.string.agafon_2:
        vfShareQuote(getResources().getText(R.string.name_agafon)+":\n"+getResources().getText(R.string.agafon_2));
        break;
    }
    }
};
 
agafon_1.setOnClickListener(oclShareQuote);
agafon_2.setOnClickListener(oclShareQuote);

При нажатии на кнопку ничего не происходит.

Вероятно дело в switch, неужели придется использовать if/else? Или что тут не так?
0
Good-bad man
255 / 233 / 17
Регистрация: 31.10.2010
Сообщений: 504
29.06.2013, 17:53 #4
Цитата Сообщение от CollSpack Посмотреть сообщение
Java
1
agafon_1.setText(R.string.agafon_1);
Цитата Сообщение от CollSpack Посмотреть сообщение
Java
1
2
switch (v.getId()) {
    case R.string.agafon_1:
Вы устанавливаете текст кнопки, а затем пробуете определять кнопку по id, которого у неё нет. setId(int)
0
29.06.2013, 17:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2013, 17:53
Привет! Вот еще темы с ответами:

Предусмотреть функцию "Назад" для фрагментов - Программирование Android
Добрый день! Как можно проще(главное не колхозно) сделать так чтобы после открытии фрагмента если нажать кнопку &quot;назад&quot; то открывался...

Постепенно вывести на экран слово "Java", в котором буквы состоят из "интересных" элементов - Программирование Android
Я учусь в универе и вот пытаюсь делать лабораторные по языку java, только на свой телефон с помощью android studio )) До этого все...

Выбор платформы разработки "1С Мобильная платформа" или "Android Studio" - Программирование Android
Всем, здравствуйте! Есть задача по разработке клиента для терминала сбора данных. Для использования его c WMS. После долгих раздумий было...

При эмулировании вместо надписи "Hello world" отображается "android" - Программирование Android
Привет форумчане! Я только-только начинал программировать на андроиде. Поставил среду, все настроил как на google.developers . Когда...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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