【发布时间】: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