【问题标题】:Android Change Layout from SurfaceViewAndroid 从 SurfaceView 更改布局
【发布时间】:2011-11-05 17:06:56
【问题描述】:

我正在制作一个带有登录屏幕的应用程序,然后进入玩游戏的表面视图。问题是用户可以在播放时注销,我需要能够将用户返回到登录屏幕。我该怎么做?

我尝试将它添加到表面视图中,但它没有做任何事情:

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

编辑:

问题解决了,下面是我在surfaceview中添加的代码:

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

值得一提的是,不要忘记将新活动添加到清单中。

【问题讨论】:

    标签: android layout surfaceview


    【解决方案1】:

    你为什么不尝试创建一个 Intent 来启动一个新的 Activity 来处理用户登录?当用户与新屏幕交互时,它将使先前专用于 SurfaceView 的 Activity 在堆栈中暂停。

    您可以在 SurfaceView Activity 的任何位置使用startActivityForResult(),详细信息为here,以在登录 Activity 完成时获取状态信息,例如成功登录或其他信息。

    【讨论】:

    • 我仍然看不到如何从surfaceview调用它。该示例从活动本身中调用另一个活动。我需要从surfaceview调用它。当我尝试从 Surfaceview 执行此操作时,我得到以下信息:方法 startActivityForResult(Intent, int) 未定义 Battle 类型
    • 我用你的选项做了更多的工作,因为我不喜欢像 Sam Quest 建议的那样“破解”。我确实让它工作了。对于其他人,这是代码: Intent intent = new Intent(); intent.setClass(getContext(), BattleLogin.class); ((Activity)getContext()).startActivityForResult(intent,loginResult);
    【解决方案2】:

    不会出现带有

    的警告对话框
    Login Name:
    Password:
    

    工作。用户应该能够输入凭据并继续。

    也许保存凭据应该使用户能够自动登录

    using a progress dialog
    

    当游戏暂停时。

    更新

    与对话框相关的错误可能是由于 UI 线程问题。

    但她是一个快速的黑客

    <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>
    

    这将漂浮在表面之上。但是你需要冻结表面(暂停你的游戏),而且这个布局不应该完全隐藏表面。

    【讨论】:

    • 我还是不明白怎么从surfaceview调用它。或者我至少需要能够将变量传递给主要活动并完成表面视图,以便活动知道接下来要显示什么布局,但我找不到任何关于如何从表面视图切换到主要活动的信息。如果我尝试在 Surfaceview 中打开一个对话框,我会遇到各种错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 2011-07-09
    • 1970-01-01
    • 2012-04-28
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多