Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.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,我已经定义了四个按钮,onclick事件显示一个内容,现在单击后按 后退按钮显示相同的四个按钮,但单击事件不起作用。 我定义了一个字段,如果用户看到content isLooked=true,那么当单击后退按钮时,我将设置contentview(R.layout.index),并且我将不允许退出当前活动。 为什么不在点击后退按钮后处理事件 private boolean isLooked = false; @Override public void onCreate(Bund

我已经定义了四个按钮,onclick事件显示一个内容,现在单击后按

后退按钮显示相同的四个按钮,但单击事件不起作用。
我定义了一个字段,如果用户看到content isLooked=true,那么当单击后退按钮时,我将设置contentview(R.layout.index),并且我将不允许退出当前活动。
为什么不在点击后退按钮后处理事件

 private boolean isLooked = false;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        try {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.index);
            initialEvents();
        } catch (Exception e) {
            new com.example.csharp.Log.Error().Save(e);
        }
    }

    private void initialEvents() {
        View v = findViewById(R.id.btnChapter1);
        v.setOnClickListener(this);
        v = findViewById(R.id.btnChapter2);
        v.setOnClickListener(this);
        v = findViewById(R.id.btnChapter3);
        v.setOnClickListener(this);
        v = findViewById(R.id.btnChapter4);
        v.setOnClickListener(this);
    }

    @Override
    public void onBackPressed() {
        if (isLooked) {
            setContentView(R.layout.index);
            isLooked = false;
        } else {
            super.onBackPressed();

        }
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && isLooked) {
            setContentView(R.layout.index);
            isLooked = false;
            return true;
        } else {
            return super.onKeyDown(keyCode, event);
        }
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.btnChapter1:
            setContentView(R.layout.chapter1_index);
            isLooked = true;
            break;

        case R.id.btnChapter2:
            setContentView(R.layout.chapter2_index);
            isLooked = true;
            break;
        case R.id.btnChapter3:
            setContentView(R.layout.chapter3_index);
            isLooked = true;
            break;

        case R.id.btnChapter4:
            setContentView(R.layout.chapter4_index);
            isLooked = true;
            break;
        }
    }

当按back键时,您正在设置新的内容视图,这是为布局集创建对象的新实例。但是您的单击侦听器是为onCreate中的视图集设置的


如果你真的想在反按时设置内容,那么你必须再次查找dviewbyd并设置侦听器。

你有什么解决方案,我不必再次设置侦听器吗?不要在反按时设置内容视图,那么如何在不使用新活动的情况下在布局前显示?