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

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

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

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

27.06.2013, 20:02. Просмотров 777. Ответов 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>


Вот скриншоты работающей программы:


Как сделать, чтобы при нажатии на кнопку-цитату можно было отправить соответствующий ей текст по СМС, в Твиттер, Фейсбук, Вконтакт и другие соц.сети?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2013, 20:02     Как реализовать функцию "share via" в моем случае?
Посмотрите здесь:
Как сделать unregisterReceiver в моем случае? Android
Как реализовать добавление композиции в "Избранное"? Android
Android Предусмотреть функцию "Назад" для фрагментов
Как добавить строку "." в начале в ListView со своим обработчиком Android
Визуализация нажатия на изображение. Как поставить картинку на "нажатие" Android
Android Как поместить surfaceview или glsurfaceview на "пол" экрана
Android Как заставить Eclipse "забыть" об ошибках в xml файлах?
Android Как преобразовать время из long в формат "ДД.ММ.ГГГГ"?
Android Toolbar как отслеживать кнопку "стрелка назад"
Android Как открывать/закрывать NavigationDrawer кнопкой "Menu"
Android Как отловить причину "unfortunately, application has stopped" на эмуляторе?
Как "слушать и читать" SMS c определенного номера? Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
27.06.2013, 23:49     Как реализовать функцию "share via" в моем случае? #2
используйте списки вместо кучи кнопок.

шаринг - http://developer.android.com/training/sharing/send.html
CollSpack
7 / 7 / 0
Регистрация: 21.01.2013
Сообщений: 55
28.06.2013, 15:28  [ТС]     Как реализовать функцию "share via" в моем случае? #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? Или что тут не так?
Good-bad man
254 / 232 / 17
Регистрация: 31.10.2010
Сообщений: 504
29.06.2013, 17:53     Как реализовать функцию "share via" в моем случае? #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)
Yandex
Объявления
29.06.2013, 17:53     Как реализовать функцию "share via" в моем случае?
Ответ Создать тему
Опции темы

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