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

стринг из ID - Android

Войти
Регистрация
Восстановить пароль
 
shavuz
69 / 75 / 12
Регистрация: 29.01.2014
Сообщений: 347
30.01.2014, 14:02     стринг из ID #1
всем привет. в данный момент работаю над аппликацией и столкнулся с множеством кнопок в активити которые открывают PDF файлы с сд кард. в он клик методе изначально начал пользоваться свичем но это выходит не очень красиво и не модулярно т.к все кнопки делают в принципе то же самое. и по этому хочу сделать следующее: все кнопки назвать в соответствии с именем файла, например Button_G1 будет соответствовать файлу G1.pdf, далее собственно вопрос, как мне присвоить стрингу ай ди нажатой кнопки для того чтоб я не использовал свич а использовал следующее:
псевдо код:
Java
1
2
3
4
 
String id = "ай ди кнопки"
id = "айди кнопки после _"
File file3 = new File("/sdcard/giut/"+id + ".pdf");
помогите перевести псевдокод в нормальный 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
public void onClickGiut(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.ButtonG1: 
        playSound(butS);
         Toast.makeText(getApplicationContext(), 
                 "Opening File", Toast.LENGTH_LONG).show();
        File file = new File("/sdcard/giut/G1.pdf");
 
        if (file.exists()) {
            Uri path = Uri.fromFile(file);
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setDataAndType(path, "application/pdf");
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
 
            try {
                
                startActivity(intent);
                
            } 
            catch (ActivityNotFoundException e) {
                Toast.makeText(Giut.this, 
                    "No Application Available to View PDF", 
                    Toast.LENGTH_SHORT).show();
            }
        }
        break;
    case R.id.ButtonG2: 
                playSound(butS);
        Toast.makeText(getApplicationContext(), 
                "Opening File", Toast.LENGTH_LONG).show();
    File file2 = new File("/sdcard/giut/G2.pdf");
"и так далее..."
спасибо
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2014, 14:02     стринг из ID
Посмотрите здесь:

C# чар в стринг
Pascal стринг паскал
Рандомный стринг C#
из чара в стринг C++
C++ стринг
тип стринг Turbo Pascal
Даны два "стринга" А и В. Проверьте, можно ли из букв, входящих в стринг А, составить стринг В Turbo Pascal
Объясните: проверьте, можно ли из букв, входящих в стринг А, составить стринг В Pascal ABC
Тип данных стринг C++
Парсинг и добавление в стринг Delphi

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
angryrobot
Командир зеленых роботов
 Аватар для angryrobot
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
30.01.2014, 14:24     стринг из ID #2
Каждой кнопке вы можете назначить tag который можно задать прямо в layot xml файле, а получить его программно через метод getTag. Tag это Object, поэтому положить в него можно что угодно, в вашем случае это будет обычная строка содержащая имя файла
shavuz
69 / 75 / 12
Регистрация: 29.01.2014
Сообщений: 347
30.01.2014, 14:33  [ТС]     стринг из ID #3
Цитата Сообщение от angryrobot Посмотреть сообщение
Каждой кнопке вы можете назначить tag который можно задать прямо в layot xml файле, а получить его программно через метод getTag. Tag это Object, поэтому положить в него можно что угодно, в вашем случае это будет обычная строка содержащая имя файла
спасибо. буду гуглить. нет ли у вас примера?
angryrobot
Командир зеленых роботов
 Аватар для angryrobot
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
30.01.2014, 14:40     стринг из ID #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Написал небольшой пример. На активити размещено две кнопки:
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
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
 
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:onClick="onClick"
        android:tag="Первая кнопка"
        android:text="Button1" />
 
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/button1"
        android:onClick="onClick"
        android:tag="Вторая кнопка"
        android:text="Button2" />
 
</RelativeLayout>
Сам файл активти выглядит так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
public class MainActivity extends Activity  {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    
    public void onClick(View v) { 
        System.out.println(v.getTag());
    }
}
Когда я запускаю приложение и нажимаю кнопки, то в логах я вижу такое:
01-30 14:39:40.678: I/System.out(28285): Первая кнопка
01-30 14:39:41.984: I/System.out(28285): Вторая кнопка
shavuz
69 / 75 / 12
Регистрация: 29.01.2014
Сообщений: 347
30.01.2014, 14:46  [ТС]     стринг из ID #5
класс!! спасибо!! то что надо
Yandex
Объявления
30.01.2014, 14:46     стринг из ID
Ответ Создать тему
Опции темы

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