Android:按下按钮后为什么按钮事件不起作用?

时间:2014-04-03 20:59:40

标签: android

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

后退按钮,显示相同的四个按钮,但点击事件不起作用 我定义了一个字段,如果用户看到内容isLooked = true,那么点击后退按钮时我会设置SetContentView(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;
        }
    }

1 个答案:

答案 0 :(得分:0)

您在后退时设置新内容视图,这是为布局集创建对象的新实例。但是您的on click侦听器是为onCreate中的视图集设置的。

如果你真的想在后面按下设置内容,那么你必须再次找到ViewById并设置监听器。