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

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

Войти
Регистрация
Восстановить пароль
 
shulyakyarik
10 / 10 / 3
Регистрация: 28.03.2014
Сообщений: 156
#1

Вызов диалога из кнопки в action bar-е - Android

11.08.2014, 20:14. Просмотров 914. Ответов 4
Метки нет (Все метки)

Закинул кнопочку в action bar при нажатии на которую должен создаваться диалог, но вылетает ошибка. Поискав в интернете причины попробовал сменить getApplicationContext() на this ,а также на MyClass.this но ошибка появляется.

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
at android.view.ViewRootImpl.setView(ViewRootImpl.java:800)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:288)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:73)
at android.app.Dialog.show(Dialog.java:287)
at android.app.AlertDialog$Builder.show(AlertDialog.java:951)
at my.ua.myapplication.ControlDB.CreateView(ControlDB.java:76)
at my.ua.myapplication.ControlDB.onOptionsItemSelected(ControlDB.java:66)
at android.app.Activity.onMenuItemSelected(Activity.java:2640)
at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:1171)
at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:630)
at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:200)
at android.view.View.performClick(View.java:4475)
at android.view.View$PerformClick.run(View.java:18786)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5419)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
at dalvik.system.NativeStart.main(Native Method)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.08.2014, 20:14     Вызов диалога из кнопки в action bar-е
Посмотрите здесь:

Android Вызов диалога из диалога
Android При смене языка пропадет Action Bar на 4.2.2
Android Как сделать так, чтобы табы в Action Bar были под ним даже на планшетах
Android Работа с drop down navigation в action bar
Как полностью убрать Action Bar? Android
Убрать Action bar Android
Action Bar Android
Split Action Bar не работает Android
Action Bar в Activity для навигации по фрагментам в TabHost-е Android
Android Как передавать данные в предыдущее activity, используя кнопку назад в action bar?
Android Ошибка при использовании action bar sherlock
Убpать веpхний Action Bar Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Spelcrawler
523 / 493 / 111
Регистрация: 12.03.2014
Сообщений: 1,646
Завершенные тесты: 1
11.08.2014, 22:00     Вызов диалога из кнопки в action bar-е #2
Код бы не помешал) И зачем кнопка в actionBar'e? Там же есть элементы меню.
shulyakyarik
10 / 10 / 3
Регистрация: 28.03.2014
Сообщений: 156
12.08.2014, 09:41  [ТС]     Вызов диалога из кнопки в action bar-е #3
Spelcrawler, эта кнопка и есть элементом.

menu.xml
XML
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
 
    <item android:id="@+id/add"
        android:icon="@drawable/plus"
        android:title=""
        android:showAsAction="ifRoom" />
 
</menu>
myActivity
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
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
 
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        return super.onCreateOptionsMenu(menu);
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                finish();
                overridePendingTransition(R.anim.dt,R.anim.alpha);
                return true;
            case R.id.add:
                CreateView();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
 
    }
 
    public void CreateView(){
        AlertDialog.Builder ad = new AlertDialog.Builder(getApplicationContext());
        ad.setTitle("Title");
        ad.setMessage("Message");
        ad.setPositiveButton("Positive", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int arg1) {
                Toast.makeText(getParent(), "True", Toast.LENGTH_LONG).show();
            }
        });
        ad.setNegativeButton("Negative", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int arg1) {
                Toast.makeText(getParent(), "False", Toast.LENGTH_LONG).show();
            }
        });
        ad.show();
    }
Spelcrawler
523 / 493 / 111
Регистрация: 12.03.2014
Сообщений: 1,646
Завершенные тесты: 1
12.08.2014, 12:16     Вызов диалога из кнопки в action bar-е #4
Подозреваю, что дело в контексте. Попробуйте передать его в метод с диалогом, а не использовать getApplicationContext()
shulyakyarik
10 / 10 / 3
Регистрация: 28.03.2014
Сообщений: 156
12.08.2014, 12:24  [ТС]     Вызов диалога из кнопки в action bar-е #5
Spelcrawler, сделал так

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
...
CreateView(this);
...
public void CreateView(final Context context){
        AlertDialog.Builder ad = new AlertDialog.Builder(context);
        ad.setTitle("Title");
        ad.setMessage("MMM");
        ad.setPositiveButton("Positive", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int arg1) {
                Toast.makeText(context, "XXX", Toast.LENGTH_LONG).show();
            }
        });
        ad.setNegativeButton("Negative", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int arg1) {
                Toast.makeText(context, "YYY", Toast.LENGTH_LONG).show();
            }
        });
        ad.show();
    }
Заработало
Yandex
Объявления
12.08.2014, 12:24     Вызов диалога из кнопки в action bar-е
Ответ Создать тему
Опции темы

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