Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓和后退按钮_Android - Fatal编程技术网

Android 安卓和后退按钮

Android 安卓和后退按钮,android,Android,我的后退按钮有问题。他不工作。当我从第一个活动转到第二个活动,从第二个活动转到第三个活动时,后退按钮不想工作。我用过: @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { moveTaskToBack(true); Log.v("Co1s", "Cos1"); return true

我的后退按钮有问题。他不工作。当我从第一个活动转到第二个活动,从第二个活动转到第三个活动时,后退按钮不想工作。我用过:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        moveTaskToBack(true);
        Log.v("Co1s", "Cos1");
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
但当我按下按钮时,我只得到:

05-23 10:45:57.863:W/KeyCharacterMap(238):无法打开keycharmap文件 05-23 10:45:57.863:W/KeyCharacterMap(238):加载keycharmap时出错 文件'/system/usr/keychars/pm8058-keypad.kcm.bin'。 硬件键盘0.devname='pm8058-keypad'05-23 10:45:57.863: W/KeyCharacterMap(238):使用默认的keymap: /系统/usr/keychars/qwerty.kcm.bin

此函数中的此日志不会显示在日志中。为什么?

编辑: acrivity nr1:

protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.services_description);

        back_button = (Button) findViewById(R.id.service_back_button);
        back_button.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                intent = new Intent(services_description.this, service.class);
                TabActivityGroup parentActivity = (TabActivityGroup)getParent();
                parentActivity.startChildActivity("menu_activity", intent);     
                finish();
            }
        });
    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Log.v("Co1s", "Cos1");
        }
        return super.onKeyDown(keyCode, event);
    }
第二:

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.service);

    title = (TextView) findViewById(R.id.serviceTitle);
    description = (TextView) findViewById(R.id.serviceDescription);
    nextPage = (ImageView) findViewById(R.id.serviceNextPage);
    back_button = (Button) findViewById(R.id.service_back_button);


    nextPage.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            intent = new Intent(service.this, services_description.class);
            TabActivityGroup parentActivity = (TabActivityGroup)getParent();
            parentActivity.startChildActivity("menu_activity", intent);     

        }
    });
    back_button.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            finish();

        }
    });
}
@Override
public void onBackPressed() {
    Log.v("Cos", "Cos");
    finish();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        moveTaskToBack(true);
        Log.v("Co1s", "Cos1");
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

你不必做任何事情来让后退按钮工作。只要删除整个块
if(keyCode==KeyEvent.keyCode\u BACK)
etc,就可以了

如果由于某种原因需要在单击“后退”按钮时登录,我认为您可以这样做:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        Log.v("Co1s", "Cos1");
    }
    return super.onKeyDown(keyCode, event);
}

重要的是,您将单击按钮的“处理”传递给覆盖的方法,并让Android操作系统本身处理返回到上一个活动的操作。

您可以在活动中覆盖,而不是覆盖
onKeyDown()

您可以通过方法
onBackPressed()覆盖后退按钮
您还可以使用此方法中的
意图
移动应用程序中的任何活动。您可以从这个链接获得更多信息。这将为您提供我们如何做到这一点

这不起作用。我没有任何日志。只有那个警告,但只有在我第一次按下按钮时。@edi233:但您的后退按钮是否按预期工作,即返回到上一个活动?我想这是这里的主要部分。。。你说你没有得到任何日志条目:你试过在你的
onKeyDown
方法中设置断点吗?在调试模式下运行时会发生什么?
keyCode
等的值是多少?你需要给我们更多的信息…不。还是不行。我想使用此日志查看当我单击“日志显示”按钮时是否显示日志。调试模式在我单击时未启动。我不知道为什么。在其他项目中,您的方式工作得很好,但在这种情况下不行。@edi233:您能详细说明一下“它仍然不工作”的意思吗?后退按钮应该“开箱即用”,而不需要添加任何关键事件处理程序。如果完全删除
onKeyDown
方法,会发生什么情况,然后是否返回到上一个活动?你应该发布更多的代码,最好是一个完整的例子来重现这个问题。它仍然不起作用,这意味着当我点击应用程序时,不会返回到以前的活动。我添加了一些代码来查看如何开始新的活动。也许问题出在你们两个中的哪一个后退按钮不起作用了?如果您的第一个活动是在后退按钮上附加一个
onClick
侦听器,同时覆盖
onKeyDown
。在第二个活动中,您同时覆盖了
onBackPressed
onKeyDown
。这一切似乎有点可疑。。。看起来你在做很多不同的事情,却不知道自己在做什么,所以我的建议是:去掉所有的“绒毛”,从一个尽可能简单的例子开始。让back按钮正常工作,然后开始同时添加一个事件处理程序,以使日志记录也正常工作。