Android изменить макет из SurfaceView - PullRequest
0 голосов
/ 29 августа 2011

Я создаю приложение с экраном входа в систему, который затем переходит к виду поверхности, где игра ведется.Проблема в том, что пользователь может выйти из системы во время игры, и мне нужно иметь возможность вернуть пользователя на экран входа.Как бы я это сделал?

Я пытался добавить это к виду поверхности, но он ничего не делает:

((Activity)getContext()).setContentView(R.layout.login);

РЕДАКТИРОВАТЬ:

Проблема решена, вот код, который я добавил в режиме просмотра поверхности:

        Intent intent = new Intent();
        intent.setClass(getContext(), BattleLogin.class);
        ((Activity)getContext()).startActivityForResult(intent,loginResult);

Может быть важно упомянуть, не забудьте добавить новое действие в манифест.

Ответы [ 2 ]

1 голос
/ 29 августа 2011

Почему бы вам не попробовать создать Intent для запуска нового Activity для обработки входа пользователя?В результате предыдущее действие, выделенное для SurfaceView, будет приостановлено в стеке, пока пользователь взаимодействует с новым экраном.

Вы можете использовать startActivityForResult(), что подробно здесь в любом месте вашего действия SurfaceViewчтобы получить информацию о статусе, например, успешный вход в систему или что-то еще, когда завершится ваш вход в систему.

0 голосов
/ 29 августа 2011

не будет диалоговым окном предупреждения с

Login Name:
Password:

работа. пользователь должен иметь возможность ввести учетные данные и продолжить.

возможно сохранение учетных данных должно позволить пользователю автоматически входить в систему

using a progress dialog

пока игра приостановлена.

UPDATE

ошибки, связанные с диалоговым окном, могут быть вызваны проблемами потока пользовательского интерфейса.

но ее быстро взломать

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/wrapper"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <SurfaceView
        android:id="@+id/surface"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <RelativeLayout android:id="@+id/my_dialog"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_centerInParent="true"
        android:visibility="**visible|gone**"
    >
        <your loging layout comes here />
    </RelativeLayout>
</RelativeLayout>

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

...