Я создал пользовательский вид и был добавлен в макет.Вызвать метод в пользовательском представлении от MainActivity.Java
<com.example.moynul.myapplication.Draw
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/view"
android:layout_above="@+id/button"
android:layout_alignRight="@+id/button2"
android:layout_alignEnd="@+id/button2"
android:layout_marginBottom="52dp"
/>
Из этого не нужно создавать экземпляр класса Draw в классе MainActivity.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
Однако это имеет ограничения, поскольку я не могу вызвать метод в классе Draw.
public void buttonOnClick(View v)
{
switch (v.getId())
{
case R.id.button:
//call a method in the Draw class
break;
}
}
Я попытался поворот моего Draw (что расширяет представление) в статический класс, и, повернувшись методом, который я хочу, чтобы получить доступ в общественном статическом методе. Но invalidate()
не нравится.
Моя следующая попытка состояла в том, чтобы создать кнопку в пользовательском классе вида с помощью GUI-компоновщика. По-видимому, вы не можете сделать кнопку дочерним объектом пользовательского объекта вида.
Мой вопрос: Как я могу получить доступ к методу в классе Draw из основного класса?
MyObject = (Object) findViewById (R .id.objectDrawnOnGUI); || Таким образом, это может работать, чтобы ссылаться на что-либо на экране устройства? Поэтому, если у меня есть слайдер, тогда слайдер слайдера = (слайдер) findViewById (R.id.mySlider); ? Код работает хорошо. – Moynul
@Moynul это правильно. – ChrisStillwell
А я вижу. Очень просто, как работают игровые движки, ссылаясь на игровые объекты через код. Отличная информация. – Moynul