Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
vladdramachev
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 61
1

Нажатие на Frame

03.09.2016, 14:07. Просмотров 888. Ответов 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]]);
А проблема сама заключается в следующем. Как сделать проверку на то что пользователь нажал на тот фрейм который нужен.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.09.2016, 14:07
Ответы с готовыми решениями:

Frame animation или как сделать анимацию
Здравствуйте. Подскажите, пожалуйста, как сделать анимацию? У меня есть...

Как отследить нажатие кнопки на Frame?
Привет, сабж. на листе есть Frame1. на нем кнопка cmdbtn1. как отследить...

Websocket frame: Как правильно построить frame byte array?
Доброго дня. Пытаюсь написать свою имплементацию Websocket, но застрял на...

Как программно добавить Frame в другой существующий на форме frame?
Делаю это так: На форме лежит Frame1. на инициализации формы.... ...

Передача информации из одного Frame в другой Frame
Здравствуйте! У меня следующий вопрос: На окне есть первый Frame в котором...

9
ExFau$t
638 / 538 / 122
Регистрация: 08.05.2012
Сообщений: 2,699
03.09.2016, 15:18 2
я ничего не понял.

Java
1
frame.setOnClickListener()
0
vladdramachev
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 61
03.09.2016, 15:34  [ТС] 3
ExFau$t, У нас есть текстовое поле куда генерируется случайным образом строка (куда надо нажать пользователю). Затем нужно сделать проверку на то что пользователь нажал на фрейм с нужным идентификатором. Типа если да то счет увеличивается. А проблема в том что надо как-то сделать переменную куда будет записываться значение идентификатора который нажали и затем сравнить с тем идентификатором который нужен. Как это сделать?
0
fraley
110 / 110 / 43
Регистрация: 24.05.2015
Сообщений: 329
03.09.2016, 15:41 4
Лучший ответ Сообщение было отмечено vladdramachev как решение

Решение

Создать 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;
            }
 
           
        }
    };
0
vladdramachev
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 61
03.09.2016, 15:50  [ТС] 5
fraley, Немного не то. Проверку по идее при помощи if else. Просто как определить переменную в которой будет храниться id нажатого элемента.
Java
1
2
3
if(переменная нажатая==id[i]){
schet=schet+1;
}
0
fraley
110 / 110 / 43
Регистрация: 24.05.2015
Сообщений: 329
03.09.2016, 16:08 6
vladdramachev, ну так а в чем проблема то в case вместо того что я написал поставить к примеру id[0]?
0
vladdramachev
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 61
04.09.2016, 18:48  [ТС] 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();
    }
}
Программа открывается. А по нажатию на кнопку приложение закрывается и выводит на экран что оно остановлено.
0
fraley
110 / 110 / 43
Регистрация: 24.05.2015
Сообщений: 329
04.09.2016, 20:12 8
Цитата Сообщение от vladdramachev Посмотреть сообщение
приложение закрывается и выводит на экран что оно остановлено.
Код ошибки из logcat?
0
vladdramachev
0 / 0 / 0
Регистрация: 03.01.2015
Сообщений: 61
05.09.2016, 11:05  [ТС] 9
fraley, Я его тестирую на телефоне. В андроид студио не получиться VTx нет

Добавлено через 14 минут
fraley, Просто если по логике посмотреть вроде вылетать не должна. Она должна была открыться->Пользователь нажимает на кнопку->запускается функция рандома->считывает нажатие пользователя->сравнивает->выводит результат
0
ExFau$t
638 / 538 / 122
Регистрация: 08.05.2012
Сообщений: 2,699
05.09.2016, 11:26 10
vladdramachev, поставь телефон в режим разработчика и считывай лог по usb.
0
05.09.2016, 11:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2016, 11:26

In a frame because it set 'X-Frame-Options' to 'SAMEORIGIN
http://rghost.ru/7hxl2VcQS.view Как ето исправить?

Обновление данных на Frame из другого Frame
Помогите реализовать: есть MainFrame и SettingsFrame. Нужно что бы при нажатии...

Frame, Chrome, Blocked a frame with origin "null"
Здавствуйте, имеется следующий файл: <html> <head </head> <frameset...


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

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

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