Вызов метода действия из класса Java - PullRequest
0 голосов
/ 16 марта 2012

Я спрашиваю, может ли кто-нибудь помочь мне с моей проблемой, которая заключается в том, что у меня есть пользовательское диалоговое окно в классе Java. В этом настраиваемом диалоговом окне есть кнопка, которая при нажатии вызывает метод из моего класса активности. Когда я запускаю код, ничего не происходит, кажется, что метод никогда не вызывается и также не выдается никаких ошибок, причина, по которой я пытаюсь сделать это таким образом, заключается в том, что класс Java используется для оверлейных элементов. Ниже приведен фрагмент кода, который у меня есть, приветствует всех, кто разбирается в проблеме

Java-класс для оверлейного элемента

    public boolean onTap(int index) {
    OverlayItem item = mapOverlays.get(index);
    Dialog dialog = new Dialog(context);

    dialog.setContentView(R.layout.dialog);
    dialog.setTitle(item.getTitle());

    TextView text = (TextView) dialog.findViewById(R.id.text);
    text.setText(item.getSnippet());
    Button CallButton = (Button) dialog.findViewById(R.id.CallButton);
    CallButton.setOnClickListener(new View.OnClickListener()
    {
        public void onClick(View v) 
        {
            try {
                TheActivityClass.showMessage();
            } catch (Exception e) {
                // TODO Auto-generated catch block

            }
        }
    }
    );
    dialog.show();
    return true;

}

Класс деятельности

public void showMessage(){



        Context context = getApplicationContext();
        CharSequence text = "I have just been pressed";
        int duration = Toast.LENGTH_SHORT;

        Toast toast = Toast.makeText(context, text, duration);
        toast.show();


    }

1 Ответ

0 голосов
/ 16 марта 2012

У вас проблема с инкапсуляцией ... Класс Activity не находится на вершине текущего стека, а метод showMessage () не является статическим.

Вы должны управлять логикой приложения изнутри Activityкласс, а не оверлейный класс Java (следуйте логике MVVM, т.е. MVC, где действие является вашим контроллером).Лучшим вариантом будет инкапсулировать объект диалогового окна / наложения в Activity и установить логику в классе Activity (для этого создайте соответствующие методы в классе overlay) или просто создать свой оверлей и внутренний класс Activity.Это позволит вам делать то, что вы пытаетесь сделать.

Надеюсь, это поможет.

...