Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
CollSpack
7 / 7 / 1
Регистрация: 21.01.2013
Сообщений: 55
#1

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

27.06.2013, 20:02. Просмотров 894. Ответов 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
Ответы с готовыми решениями:

Как сделать unregisterReceiver в моем случае?
вот так я регистрирую ресивер для отправки SMS: ...

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

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

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

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

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

шаринг - http://developer.android.com/training/sharing/send.html
1
CollSpack
7 / 7 / 1
Регистрация: 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 / 38
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2013, 17:53

Ошибка "Unknown method "e" of "org.apache.commons.logging.Log"
Unknown method 'e' of 'org.apache.commons.logging.Log' package...

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

Постепенно вывести на экран слово "Java", в котором буквы состоят из "интересных" элементов
Я учусь в универе и вот пытаюсь делать лабораторные по языку java, только на...


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

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

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