Моя проблема - связь между пользовательским GameView (расширяет SurfaceView) и TextView: я хочу установить текст TextView изнутри GameView.
В основной деятельности я использую этот файл макета, он должен объяснить структуру моего приложения:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#00ff00"
>
<TextView
android:id="@+id/scoreTV"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="score: 0"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="back"
android:layout_alignParentRight="true" />
</RelativeLayout>
<org.gk.grApp.GameView
android:id="@+id/gameplayScreen"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
Я не могу изменить текст TextView в моем объекте GameView, потому что невозможно прикоснуться к потоку пользовательского интерфейса из другого.
Обработчик тоже не работает, потому что я не могу дать ссылку обработчика на конструктор GameView, который выполняется после загрузки этого xml-файла (чтение о конструкторе по умолчанию для xml-файлов, например, здесь Как я могу использовать GLSurfaceView в LinearLayout вместе с другими представлениями, такими как TextView или Button? ).
Ты хоть представляешь, что мне теперь делать? Возможно, мой вывод неправильный, поэтому, пожалуйста, расскажите мне об этом.
РЕДАКТИРОВАТЬ: я изменил свой xml-файл вместо GameView, который у меня сейчас:
<LinearLayout
android:id="@+id/gameplayScreen"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
</LinearLayout>
Также я добавил аргумент (третий) в подпись конструктора:
public GameView(Context context, AttributeSet as, Handler h) { ... }
и изменил мой onCreate в GameplayActivity:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gameplay);
LinearLayout ll = (LinearLayout)findViewById(R.id.gameplayScreen);
GV = new GameView(this, null, scoreHandler);
ll.addView(GV);
}
Это работает, теперь я могу установить текст TextView, но после нажатия кнопки «Назад» выдается еще одно исключение:
Msgstr "Выполнение приостановки действия, которое не возобновлено: {org.gk.grApp / org.gk.grApp.MainMenuActivity}". Я только начал искать информацию об этом.