我的应用程序中有很多视图,现在的问题是如何从一个视图返回到另一个视图。
我可以通过在每个视图中设置按钮来做到这一点,但我想使用android后退硬按钮。
我尝试过这样的事情:
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if(keyCode==KeyEvent.KEYCODE_BACK)
{
finish();
}
return false;
}
但问题是这会关闭我的申请。 你能否指导我找一个合适的解决方案,例如记住最后一个视图,然后再回到这个视图或类似的东西。
以下是我要更改视图的代码(这是我主要活动中的方法):
public void CheckIfUserIsLogedIn ()
{
int userPresence = localDatabase.CheckUserPresence();
if (userPresence == 0)
{
setContentView(R.layout.main);
}
else
{
setContentView(R.layout.userlogedon);
}
}
谢谢。
答案 0 :(得分:2)
看!
你做错了..
Activity
课程应仅包含内容View
。 (因为它是推荐的方式,易于使用和实施)。
如果您想转到下一个View
,请在另一个Activity
下显示。
完成后,您将自动重定向到之前的Activity
。
(并且您不需要记住以前的视图:))
See here,如何使用Activity
Stacks。
答案 1 :(得分:1)
我不确定是否正确理解您的问题,因为Android会自动为您完成所有这些操作。切换到另一个视图后打开视图时,它会暂停(在屏幕上但没有焦点)或停止(没有焦点)
http://developer.android.com/reference/android/app/Activity.html
如果当前视图(活动)已由上一个视图(活动)启动,则按后退按钮将使您“关闭”当前视图并自动返回上一个视图。
现在有两件事:
也许你只是通过显示开启或关闭组件来打开所有视图,这是一种不好的方式,而不是由android推荐的。你应该做的是1个视图= 1个活动。
你在想像“iPhone / iPad”,你必须在“视图”中实现后退按钮。在android中你不需要这样做。在此时将“完成”命令放在代码中似乎关闭了应用程序,这使得我认为您已编程,如第1点所述。
希望有所帮助
修改强>:
要开始新活动,请执行此操作
startActivity(new Intent(this, MyOtherActivity.class));
你把它放在你想要加载新视图(活动)的代码中
现在,如果你想在活动之间传递一些信息,你必须这样做:
Intent myIntent; //intent declaration
int aNumber = 10; // info to send to other activity
String aString = "abcd"; // info to send to other activity
// link Intent to the other activity
myIntent = new Intent(view.getContext(), MyOtherActivity.class)
//put the extra info
myIntent.putExtra("myNumber", aNumber);
myIntent.putExtra("myString", aString);
//start the new view/activity
startActivity(myIntent);
并在新打开的活动中检索这样的信息(通常在oncreate中)
int aNumber;
String aString;
@Override
public void onCreate(Bundle savedInstanceState) {
aNumber= getIntent().getExtras().getInt("myNumber");
aString= getIntent().getExtras().getString("myString");
}
答案 2 :(得分:0)
实际上我不确定是否完全理解但是......
获取地图或共享首选项,并在后面的按钮设置最后一个地图上的视图或共享首选项。
在调用或启动活动时,获取存储了您的数据。
这会对你有所帮助。