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

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

Войти
Регистрация
Восстановить пароль
 
vladdramachev
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 51
#1

Нажатие на Frame - Android

03.09.2016, 14:07. Просмотров 222. Ответов 9
Метки нет (Все метки)

Здравствуйте. Появилась проблема. У меня есть массив из идентификаторов Frame'ов
Java
1
int[] id ={R.id.kick, R.id.snare, R.id.crash, R.id.lowtom, R.id.hitom, R.id.ride, R.id.hihat};
Есть массив строковый
Java
1
String[] Text={"Press kick","Press Snare","Press Crash","Press Low Tom","Press Hi Tom","Press Ride","Press Hi Hat"};
Так же есть элемент TextView
Java
1
TextView comand = (TextView)findViewById(R.id.textView);
Текст в TextView генерируется случайным образом
Java
1
2
 id[i] = rd.nextInt(7);
           comand.setText(""+Text[id[i]]);
А проблема сама заключается в следующем. Как сделать проверку на то что пользователь нажал на тот фрейм который нужен.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ExFau$t
222 / 205 / 40
Регистрация: 08.05.2012
Сообщений: 1,148
03.09.2016, 15:18     Нажатие на Frame #2
я ничего не понял.

Java
1
frame.setOnClickListener()
vladdramachev
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 51
03.09.2016, 15:34  [ТС]     Нажатие на Frame #3
ExFau$t, У нас есть текстовое поле куда генерируется случайным образом строка (куда надо нажать пользователю). Затем нужно сделать проверку на то что пользователь нажал на фрейм с нужным идентификатором. Типа если да то счет увеличивается. А проблема в том что надо как-то сделать переменную куда будет записываться значение идентификатора который нажали и затем сравнить с тем идентификатором который нужен. Как это сделать?
fraley
103 / 103 / 37
Регистрация: 24.05.2015
Сообщений: 312
03.09.2016, 15:41     Нажатие на Frame #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Создать OnClickListener, подписать на него все фреймы.
Ну и соответственно в OnClickListener сделать что-то подобное:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
View.OnClickListener myOnClickListener=new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            switch (view.getId()){
                case R.id.kick:
                    //тут пишем нужное действие
                    break;
                case R.id.snare:
                    //тут пишем нужное действие
                    break;
                case R.id.crash:
                    //тут пишем нужное действие
                    break;
                case R.id.lowtom:
                    //тут пишем нужное действие
                    break;
            }
 
           
        }
    };
vladdramachev
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 51
03.09.2016, 15:50  [ТС]     Нажатие на Frame #5
fraley, Немного не то. Проверку по идее при помощи if else. Просто как определить переменную в которой будет храниться id нажатого элемента.
Java
1
2
3
if(переменная нажатая==id[i]){
schet=schet+1;
}
fraley
103 / 103 / 37
Регистрация: 24.05.2015
Сообщений: 312
03.09.2016, 16:08     Нажатие на Frame #6
vladdramachev, ну так а в чем проблема то в case вместо того что я написал поставить к примеру id[0]?
vladdramachev
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 51
04.09.2016, 18:48  [ТС]     Нажатие на Frame #7
fraley, Слушай. Можешь посмотреть код пожалуйста? Просто я не пойму в чем ошибка
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
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
package com.example.user.drumpads;
 
 
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.CountDownTimer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.TextView;
import java.util.Random;
 
 
public class MainActivity extends AppCompatActivity {
    FrameLayout fr;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public int schet=0;
    public int[] id = {R.id.kick, R.id.snare, R.id.crash, R.id.lowtom, R.id.hitom, R.id.ride, R.id.hihat};
    public String[] Text ={"kick", "Snare", "Crash", "LowTom", "HiTom", "Ride", "HiHat"};
    public void KickClick() {
        MediaPlayer kick = MediaPlayer.create(this, R.raw.kick_default);
        kick.start();
 
    }
 
    public void SnareClick() {
        MediaPlayer snare = MediaPlayer.create(this, R.raw.snare_default);
        snare.start();
 
    }
 
    public void ClapClick(View v) {
        MediaPlayer clap = MediaPlayer.create(this, R.raw.clap_default);
        clap.start();
 
    }
 
 
    public void CrashClick() {
        MediaPlayer crash = MediaPlayer.create(this, R.raw.crash_default);
        crash.start();
 
    }
 
    public void HiHatClick() {
        MediaPlayer HiHat = MediaPlayer.create(this, R.raw.hihat_default);
        HiHat.start();
 
    }
 
 
    public void RideClick() {
        MediaPlayer Ride = MediaPlayer.create(this, R.raw.ride_default);
        Ride.start();
 
    }
 
    public void endscr(){
        Intent intent = new Intent(MainActivity.this, end.class);
 
        startActivity(intent);
    }
 
    public void TomClick() {
        MediaPlayer Tom = MediaPlayer.create(this, R.raw.tom_default);
        Tom.start();
    }
 
    protected void doInBackground(){
 
 
                    new CountDownTimer(30000, 1000) {
 
                        public void onTick(long millisUntilFinished) {
 
                        }
 
                        public void onFinish() {
                            endscr();
                        }
                    }.start();
 
            }
    public int Press;
    public int i;
public void random(){
    TextView comand = (TextView)findViewById(R.id.textView);
    Random rd = new Random();
    i = rd.nextInt(6);
    comand.append("Press "+Text[i]);
}
    View.OnClickListener MyClick=new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.kick:
                    Press=id[0];
                    KickClick();
                    break;
                case R.id.snare:
                    Press=id[1];
                    SnareClick();
                    break;
                case R.id.crash:
                    Press=id[2];
                    CrashClick();
                    break;
                case R.id.lowtom:
                    Press=id[3];
                    TomClick();
                    break;
                case R.id.hitom:
                    Press=id[4];
                    TomClick();
                    break;
                case  R.id.ride:
                    Press=id[5];
                    RideClick();
                    break;
                case  R.id.hihat:
                    Press=id[6];
                    HiHatClick();
                    break;
            }
        }
 
    };
    public void game() {
 
        schet=0;
        int sc=0;
        while (sc!=5) {
            random();
             while (Press!=id[i]){
                 fr.setOnClickListener(MyClick);
 
             }
            if (id[i] == Press) {
                schet ++;
            }
            sc++;
        }
        endscr();
    }
}
Программа открывается. А по нажатию на кнопку приложение закрывается и выводит на экран что оно остановлено.
fraley
103 / 103 / 37
Регистрация: 24.05.2015
Сообщений: 312
04.09.2016, 20:12     Нажатие на Frame #8
Цитата Сообщение от vladdramachev Посмотреть сообщение
приложение закрывается и выводит на экран что оно остановлено.
Код ошибки из logcat?
vladdramachev
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 51
05.09.2016, 11:05  [ТС]     Нажатие на Frame #9
fraley, Я его тестирую на телефоне. В андроид студио не получиться VTx нет

Добавлено через 14 минут
fraley, Просто если по логике посмотреть вроде вылетать не должна. Она должна была открыться->Пользователь нажимает на кнопку->запускается функция рандома->считывает нажатие пользователя->сравнивает->выводит результат
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2016, 11:26     Нажатие на Frame
Еще ссылки по теме:

Нажатие ImageButton Android
Android Реакция кнопки на нажатие
Кнопка не реагирует на нажатие Android
Frame animation или как сделать анимацию Android
Android Нажатие на CardView

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

Или воспользуйтесь поиском по форуму:
ExFau$t
222 / 205 / 40
Регистрация: 08.05.2012
Сообщений: 1,148
05.09.2016, 11:26     Нажатие на Frame #10
vladdramachev, поставь телефон в режим разработчика и считывай лог по usb.
Yandex
Объявления
05.09.2016, 11:26     Нажатие на Frame
Ответ Создать тему
Опции темы

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