带参数的onBackPressed()

时间:2013-11-05 21:12:16

标签: android

我在我的应用中使用onBackPressed()方法的地方很少。 在每个地方我都希望这种方法能够做其他事情。 当用户处于X布局时,我希望Back按钮在Y布局中做一些其他的思考,所以我认为最好的解决方案是在onBackPressed方法中使用参数。 例如在X onBackPressed(0)中;并在Y onBackPressed(1);等

@Override
public void onBackPressed(int c){
    if(c==0)Toast.makeText(getApplicationContext(), "This is X", Toast.LENGTH_SHORT).show();
    if (c==1)Toast.makeText(getApplicationContext(), "This is Y", Toast.LENGTH_SHORT).show();
}

但它不起作用。 您有什么想法可以让它起作用吗?或者有没有更好的解决方案来解决这个问题?

3 个答案:

答案 0 :(得分:2)

您正在覆盖框架方法,并且除了API定义的参数之外,您无法传递任何其他参数。但是,您可以创建自己的方法来检查所需内容:

   @Override
public void onBackPressed(){

    switch(checkLayout()){
 case 1: //do stuff
 break;
 case 2: .....
 }
 }

并且稍微扩展CommonsWare的评论:是的,用户不是“处于某种布局”。用户正在与托管特定布局的某个Activity进行交互。如果你真的不明白这意味着什么,你应该参考这个文件:http://developer.android.com/reference/android/app/Activity.html

答案 1 :(得分:2)

在Android中重写方法的方法是你必须完全复制方法标题。当你改变它时,它仍然会编译,但是Java会将它作为一个重载方法读取,因此不会对它做任何事情,因为它永远不会被调用。

在onBackPressed()之外处理一个实例变量然后在实际按下它时处理它会好得多。

以下是一个简单的实现。

//Your instance variable
boolean myRandomInstanceVariable = true;

@Override
public void onBackPressed()
{
   if(myRandomInstanceVariable)
   {
      //do stuff
   }
   else
   {
      //do other stuff
   }
}

答案 2 :(得分:0)

在您的类中创建一个字段,将其设置为某个地方的某个值,以及某个其他地方的某个其他值。然后在onBackPressed()中检查该字段的值并相应地继续。