如何制作后退功能并设置最后一个contentView

时间:2012-02-13 07:20:37

标签: android android-view

我的应用程序中有很多视图,现在的问题是如何从一个视图返回到另一个视图。

我可以通过在每个视图中设置按钮来做到这一点,但我想使用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);
    }
}  

谢谢。

3 个答案:

答案 0 :(得分:2)

看!

你做错了..

Activity课程应仅包含内容View。 (因为它是推荐的方式,易于使用和实施)。

如果您想转到下一个View,请在另一个Activity下显示。

完成后,您将自动重定向到之前的Activity

(并且您不需要记住以前的视图:))

See here,如何使用Activity Stacks。

答案 1 :(得分:1)

我不确定是否正确理解您的问题,因为Android会自动为您完成所有这些操作。切换到另一个视图后打开视图时,它会暂停(在屏幕上但没有焦点)或停止(没有焦点)

http://developer.android.com/reference/android/app/Activity.html

如果当前视图(活动)已由上一个视图(活动)启动,则按后退按钮将使您“关闭”当前视图并自动返回上一个视图。

现在有两件事:

  1. 也许你只是通过显示开启或关闭组件来打开所有视图,这是一种不好的方式,而不是由android推荐的。你应该做的是1个视图= 1个活动。

  2. 你在想像“iPhone / iPad”,你必须在“视图”中实现后退按钮。在android中你不需要这样做。在此时将“完成”命令放在代码中似乎关闭了应用程序,这使得我认为您已编程,如第1点所述。

  3. 希望有所帮助

    修改

    要开始新活动,请执行此操作

    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)

实际上我不确定是否完全理解但是......

获取地图或共享首选项,并在后面的按钮设置最后一个地图上的视图或共享首选项。

在调用或启动活动时,获取存储了您的数据。

这会对你有所帮助。