Вам нужно вызвать findViewById из класса, который на самом деле имеет метод.Хорошей практикой, как правило, является прохождение действия, из которого вы создаете этот класс.Что-то вроде:
public class msgbox extends Plugin {
private static final String SHOW = "show";
private static final int MSG_INDEX = 0;
private String msg;
private final Activity parent;
// constructor
public msgbox(Activity parent) {
this.parent = parent;
}
Затем вы можете сделать:
parent.findViewById(R.id.layoutroot)
Вы создаете свой msgbox из действия, используя:
msgbox myMsgBox = new msgbox(this);
Конечно,чтобы сделать это, компонент R.id.layoutroot
должен быть в активности, которую вы передали.
Если вы не участвуете в операции, когда создаете msgbox, вы можете заменить внедрение конструктора на установщик:
public void setParent(Activity parent) {
this.parent = parent;
}
Хотя, чтобы иметь возможность использовать findViewById в вашем Runnable
, родительский элемент должен быть конечным, поэтому вам придется скопировать его в конечную переменную (очевидно, внедрение метода set не может быть окончательным)
(NB: Кроме того, ваш класс не использует стандартные соглашения об именах Java, это сбивает с толку: назовите его MsgBox
)