【问题标题】:What is the best way to use multiple layouts with selective back button?使用带有选择性后退按钮的多个布局的最佳方法是什么?
【发布时间】:2014-03-31 12:56:05
【问题描述】:

我想使用 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

哪个 onCreate 调用:

setContentView(R.layout.ScreenX);

并且需要在 AndroidManifest.xml 中额外声明

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

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

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

【问题讨论】:

    标签: android android-layout return back-button


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-03-07
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 2010-09-06
      • 2016-10-28
      • 2013-08-21
      • 2013-04-21
      • 1970-01-01
      相关资源
      最近更新 更多