使用带有选择性后退按钮的多个布局的最佳方法是什么



我想使用 Android 设备的后退/返回按钮在我的应用程序中切换到以前的布局,但仅适用于特定布局。所有其他情况应使用按钮正常关闭应用程序功能。这是为了节省屏幕上的空间,以便明显的"在此之前返回屏幕"按钮。

到目前为止,我想出了这个简单的解决方案:

int screenid=0;
public void ButtonClickN(View v)
{
    setContentView(R.layout.ScreenX);
    screenid=3;
}
public void onBackPressed()
{
    if(screenid==2) // screen z
    {
        setContentView(R.layout.ScreenY);
        screenid=1;
        return;
    }
    if(screenid==3) // screen x
    {
        setContentView(R.layout.ScreenZ);
        screenid=2;
        return;
    }
    finish(); // all other cases button works as normal
}

但我觉得这不是最好的方法,因为可能有一些内置的东西可以使其更简单。比如说,按名称比较布局以删除整数,或者从左向右滑动布局......

另一种工作方法是使用 Intent 在另一个活动中创建新屏幕。它将新布局绘制在旧布局上:

public void ButtonClickN(View v)
{
    Intent i3 = new Intent(view.getContext(), ActivityX.class);
    startActivityForResult(i3, 0);
}

这使得Android后退按钮像以前一样工作,但需要为每个屏幕创建一个新类。

public class ActivityX extends Activity

其中创建调用:

setContentView(R.layout.ScreenX);

并且需要在 Android 清单中进行其他声明.xml

<activity android:name=".ActivityX"></activity>

与第一个解决方案相比,显然太麻烦了。它还会在模拟器中产生重叠效果,我想避免这种情况。到目前为止,这种效果还没有出现在我的三星Galaxy Y(GT-S5360)上,但谁知道它在其他设备上会是什么。

所以我的问题,有没有更好/更简单的方法来选择性地使用 Android 后退按钮?或者更有效地在全屏布局之间切换?

显然,保持当前正在使用的屏幕的ID整数是最简单的解决方案。

最新更新