我在我的应用中使用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();
}
但它不起作用。 您有什么想法可以让它起作用吗?或者有没有更好的解决方案来解决这个问题?
答案 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()
中检查该字段的值并相应地继续。