Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
1 / 1 / 1
Регистрация: 13.03.2014
Сообщений: 214
1

Кнопка не нажимается с первого раза

22.04.2018, 23:00. Просмотров 1594. Ответов 18
Метки нет (Все метки)

Здравствуйте. Столкнулся со странной вещью - кнопки на мейнактивити не нажимаются с первого раза. Если запустить приложение, то сначала всё нормально, но если перейти на другое активити, а потом вернуться снова на мейн и нажать на кнопку, то ничего не происходит, а после второго нажатия начинает работать. причем на других активити такого нет. в чем может быть проблема? я уже всю голову сломал и новые кнопки создавал и перемещал их на разные лейоты размещал - все равно с первого раза не работают.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2018, 23:00
Ответы с готовыми решениями:

Кнопка нажимается не с первого раза?
На сайте выбор вариативного цвета на смартфонах откликается не с первого раза...

Кнопка Enter в командной строке нажимается по 2 раза
Здравствуйте. Есть программа для записи/чтения тесктовых файлов, написана на си++ в Visual. Такое...

Vba+Ie не нажимается кнопка
Всем привет! Помогите разобраться, ребята.. есть сайт (скинуть не могу, политика безопасности)...

Не нажимается кнопка сохранить
Всем доброго времени суток! Такая ситуация, установил Битрикс интернет магазин с стандартным...

18
30 / 28 / 8
Регистрация: 07.01.2017
Сообщений: 205
23.04.2018, 01:12 2
Очевидно что проблема есть
0
1174 / 907 / 287
Регистрация: 08.05.2012
Сообщений: 4,279
23.04.2018, 10:35 3
Код где?
0
1 / 1 / 1
Регистрация: 13.03.2014
Сообщений: 214
23.04.2018, 23:29  [ТС] 4
MainActivity.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
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
package com.example.a002;
 
 
import android.content.Intent;
 
 
import android.os.Bundle;
 
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
 
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
 
import android.widget.Button;
import android.widget.Toast;
 
 
public class MainActivity extends AppCompatActivity {
 
 
    Button button;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
 
        button = (Button) findViewById(R.id.button);
 
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "нажал", Toast.LENGTH_SHORT).show();
            }
        });
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
 
        switch (id) {
            case R.id.mSET:
                Intent settings = new Intent(this, SettingsActivity.class);
                startActivity(settings);
                break;
            case R.id.mAlarm:
                Intent alarm = new Intent(this, AlarmActivity.class);
                startActivity(alarm);
                break;
            case R.id.mPROF:
                Intent profile = new Intent(this, ProfileActivity.class);
                startActivity(profile);
                break;
            case R.id.mAB:
                Intent about = new Intent(this, AboutActivity.class);
                startActivity(about);
                break;
        }
 
        return super.onOptionsItemSelected(item);
    }
 
 
}
Добавлено через 1 минуту
Content_main.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="1"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    app:layout_scrollFlags="scroll"
    tools:context="com.example.a002.MainActivity"
    tools:showIn="@layout/activity_main">
 
    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/button" />
 
</LinearLayout>
Добавлено через 36 секунд
Activity_main.xml
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
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.a002.MainActivity">
 
    <android.support.design.widget.AppBarLayout
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:theme="@style/AppTheme.AppBarOverlay">
 
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?android:attr/actionBarSize"
            android:background="@color/colorAccent"
            app:popupTheme="@style/AppTheme.PopupOverlay" />
 
    </android.support.design.widget.AppBarLayout>
 
    <include layout="@layout/content_main"
        android:id="@+id/include"/>
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
 
    </LinearLayout>
 
</android.support.design.widget.CoordinatorLayout>
Добавлено через 6 минут
на другом активити, которое открывается из меню, может даже вообще ничего не происходить и оно может быть пустое - просто перехожу через меню на другое активити, потом через меню возвращаюсь обратно и кнопка не срабатывает с первого раза.
0
+1
332 / 165 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
24.04.2018, 07:51 5
Это не весь код. Самое нужное - где ты переходишь на другое активити и возвращаешься назад – этого не вижу.

Добавлено через 56 минут
Пардоньте, не по-русски выразился.
Каким образом "возвращаешься"?
Лучше бы весь проект выложил, ибо в представленном коде косяков нет.
0
1 / 1 / 1
Регистрация: 13.03.2014
Сообщений: 214
24.04.2018, 08:30  [ТС] 6
Java
1
public boolean onOptionsItemSelected
Переходы между активити через меню в виде выпадающего списка. На другом активити аналогичный код для меню
0
30 / 28 / 8
Регистрация: 07.01.2017
Сообщений: 205
24.04.2018, 08:36 7
Кликните здесь для просмотра всего текста
лучше напостить 100 пустых сообщений чем написать одно по делу, не правда ли?
0
+1
332 / 165 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
24.04.2018, 13:43 8
Вот как догадаться, что там у тебя в манифесте?
Ты запретил запуск копий?
Или сейчас у тебя получается, что ты запускаешь вторую активити, потом из неё ещё одну первую, поверх старой, причем, старая так же жива и ожидает событий от обработчиков.
Или тут finish добавь, прежде чем запускать вторую.
0
1 / 1 / 1
Регистрация: 13.03.2014
Сообщений: 214
24.04.2018, 21:06  [ТС] 9
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
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.a002" >
 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.VIBRATE"/>
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar"
            android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".SettingsActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar" >
        </activity>
        <activity
            android:name=".AboutActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar" >
        </activity>     
    </application>
 
</manifest>
0
30 / 28 / 8
Регистрация: 07.01.2017
Сообщений: 205
24.04.2018, 21:10 10
А где еще 2 активити в манифесте?
Profile и alarm
0
1 / 1 / 1
Регистрация: 13.03.2014
Сообщений: 214
25.04.2018, 19:52  [ТС] 11
лишнее удалил - они не используются. тут можно один любой другой активити оставить и не важно, что на нем находится, оно может быть вобще пустое и все равно при переходе на него и обратно на мейн будет происходить эта ситуация

Добавлено через 21 час 59 минут
методом исключения выяснил, что проблема из-за строки в манифесте, чтобы активити не создавалось заново и сохраняло свое состояние. если убрать этот параметр, то кнопки нажимаются с первого раза, но само приложение тогда будет работать некорректно, так что этот параметр важен.
XML
1
android:launchMode="singleTask"
Можно ли както исправить проблему? я вообще не могу понять из-за чего это происходит.
0
30 / 28 / 8
Регистрация: 07.01.2017
Сообщений: 205
25.04.2018, 19:55 12
Тут никто не может понять потому что нет кода полностью в том виде в котором он нужен для полного видения ситуации.
Сложна
0
1 / 1 / 1
Регистрация: 13.03.2014
Сообщений: 214
25.04.2018, 20:11  [ТС] 13
я весь код выложил - все три файла мейнактивити и манифест. другие активити работают с меню так же и могут быть даже пустыми, но вот пример другое активити
activity_about.xml
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
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.a002.AboutActivity">
 
    <android.support.design.widget.AppBarLayout
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:theme="@style/AppTheme.AppBarOverlay">
 
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?android:attr/actionBarSize"
            android:background="@color/colorAccent"
            app:popupTheme="@style/AppTheme.PopupOverlay" />
 
    </android.support.design.widget.AppBarLayout>
 
    <include layout="@layout/content_about"/>
 
</android.support.design.widget.CoordinatorLayout>
content_about.xml
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/activity_about"
    tools:context="com.example.a002.AboutActivity">
 
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
 
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
 
            <Button
                android:id="@+id/bSUP"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="@string/bSUP" />
 
            <TextView
                android:id="@+id/tName"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="@string/app_name"
                android:textAlignment="center"
                android:textSize="24sp"
                android:textStyle="bold" />           
 
        </LinearLayout>
    </ScrollView>
 
</LinearLayout>
AboutActivity.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
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
package com.example.a002;
 
import android.content.Intent;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
 
public class AboutActivity extends AppCompatActivity {
 
    Button bSUP;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_about);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
 
        bSUP = (Button) findViewById(R.id.bSUP);
 
        bSUP.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {           
                Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto","test@gmail.com", null));
                emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Support");
                startActivity(Intent.createChooser(emailIntent, ""));
            }
        });
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
 
        //noinspection SimplifiableIfStatement    
 
    switch (id) {
        case R.id.mSET:
            Intent settings = new Intent(this, SettingsActivity.class);
            startActivity(settings);
        break;
        case R.id.mMAIN:
            Intent main = new Intent(this, MainActivity.class);
            startActivity(main);
        break;
    }
 
        return super.onOptionsItemSelected(item);
    }
}
0
30 / 28 / 8
Регистрация: 07.01.2017
Сообщений: 205
25.04.2018, 20:13 14
Вот теперь понятно) судя по коду все работает так как и должно работать)
0
1 / 1 / 1
Регистрация: 13.03.2014
Сообщений: 214
25.04.2018, 20:18  [ТС] 15
хех а как сделать, чтобы работало так как надо?
0
+1
332 / 165 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
26.04.2018, 04:35 16
Лучший ответ Сообщение было отмечено 1inkin1 как решение

Решение

Цитата Сообщение от 1inkin1 Посмотреть сообщение
а как сделать, чтобы работало так как надо?
C андроидом это сложный вопрос. Сегодня код работает как надо, а завтра получим обновление андроид студии и придется переписывать половину кода на новые правила.
В твоей ситуации, такое впечатление, что активити вроде как отриcовывается, но не получает фокуса.
И, получается, что первым тычком ты даёшь ей фокус, а потом она начинает обрабатывать события.
Попробуй такой костыль - в onResume принудительно пропиши фокус какому-нибудь лайоуту.
Javascript
1
My_Layout.requestFocus();
XML
1
2
3
4
5
6
             <LinearLayout
                    android:id="@+id/My_Layout"
                    .......................
                    android:focusable="true"
                    android:focusableInTouchMode="true"
            .................
1
30 / 28 / 8
Регистрация: 07.01.2017
Сообщений: 205
26.04.2018, 08:20 17
Ты переходишь с иэйн в эбаут активити. А потом не возвращаешься назад а переходишь дальше по стеку. Т. Е. Создаешь еще одну копию.

Как минимум Надо определится с архитектурой приложения что бы не было путаницы.потому что в данном случае просто плодятся активити, что порождает кучу кривизны. Как вариант заюзать готовый шаблон типа navigationDrawer или bottomSheet.

Надо так же понять когда ты возвращаешься а когда идешь дальше. В эбаут активити при ппррходе на мэйн можно добавить this.finish так же и в методе onBackPressed.добавить this.finish.тогда эбаут будет работать как надо.
0
+1
332 / 165 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
26.04.2018, 09:17 18
Цитата Сообщение от Mail-up Посмотреть сообщение
Создаешь еще одну копию
У него в манифесте прописано
android:launchMode="singleTask"
Так копия не создаётся.
0
1 / 1 / 1
Регистрация: 13.03.2014
Сообщений: 214
26.04.2018, 19:07  [ТС] 19
Спасибо, я понял вашу идею о проблеме. с фокусами не получилось, но решил проблему имитацией нажатия на экран в onResume. конечно, костыль, но других идей не нашел.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2018, 19:07

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Не нажимается кнопка Отправить
Через сниффер все делал. Сообщение не отправляется, то есть не нажимается кнопка отправить на...

Невидимая кнопка не нажимается
Вопрос, вероятно, очень глупый, но ответ на него я так и не нашел. Знаний о Delphi у меня не много,...

Сама нажимается правая кнопка мыши
Периодически происходит имитация нажатия правой кнопки мыши. Диски полностью форматировал, купил...

В WebBrowser, не нажимается кнопка web-страницы
Сразу хочу отметить, что тема необычная, она скорей относится не столько к Delphi, сколько...


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

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

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