Невозможно сделать статическую ссылку на нестатический метод sendEmptyMessage (int) из типа Handler - PullRequest
2 голосов
/ 01 июля 2011

У меня ошибка "Не удается сделать статическую ссылку на нестатический метод sendEmptyMessage (int) из типа Handler"

Как это исправить?Как я думаю, это проблема, что этот класс, где я делаю это не деятельность?

        new Thread() {
            public void run() {
            try {

                    List<Sail> sails = searchSails();

                    selectSailIntent.putParcelableArrayListExtra(
                            Constant.SAILS, new ArrayList<Sail>(sails));

                    getContext().startActivity(selectSailIntent);

                    Handler.sendEmptyMessage(0);

                } catch (Exception e) {
                     alertDialog.setMessage(e.getMessage());
                     Handler.sendEmptyMessage(1);

                }
            }
        }.start();
    }
};

Ответы [ 2 ]

9 голосов
/ 01 июля 2011

"Невозможно сделать статическую ссылку на нестатический метод sendEmptyMessage (int) из типа Handler"

Этоиз-за того, что Handler относится к классу, но sendEmptyMessage не является статическим методом (должен вызываться для объекта, а не для класса).

Как это исправить?

Чтобы вызвать метод sendEmptyMessage, вам нужно будет либо

  1. Нужно создать a Handler, то есть сделать что-то вроде

    Handler h = new Handler();
    h.sendEmptyMessage(0);
    

    или

  2. Добавить модификатор static в метод sendEmptyMessage:

    public static void sendEmptyMessage(int i) { ...
           ^^^^^^
    
3 голосов
/ 01 июля 2011
Handler handler = new Handler();
Handler.myStaticMethod();
handler.myNonStaticMethod();

Чтобы вызвать нестатический метод (он же методы экземпляра), вы должны обратиться к определенному объекту (экземпляру). Вы не можете обратиться к классу.

Статические методы можно вызывать, ссылаясь только на класс (их также можно вызывать из ссылки на объект этого класса, но это считается плохой практикой).

Об использовании: когда вы создаете экземпляр (объект), этот объект имеет некоторые внутренние данные (состояние). Нестатические методы используют состояние объекта, на который ссылаются, статические методы не нуждаются в этих данных).

...