如何在onResume Activity中重新激活onClick Listener

时间:2016-07-25 11:50:39

标签: android android-layout navigation-drawer

我创建了一个名为BaseNavigationActivity的活动,可以创建NavigationDrawer。所有其他活动都从此活动延伸。它工作正常,按钮点击打开抽屉。

但是当我进入另一个活动,并回到之前的活动。按钮停止工作。虽然视觉按钮仍然存在,如果我从左侧单击并拖动,它将打开Drawer Layout

当我调试它时,我发现它调用了onRestart()onResume()方法,但没有用这些方法编写的代码。

那么我还需要在那里添加代码吗?或者有没有办法在onClickListneronRestart()活动中实施onResume()

的onCreate()

drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout_main);
headerLayout= (FrameLayout) findViewById(R.id.header_layout);
btnOpenDrawer= (Button) findViewById(R.id.btn_openDrawer);
homeLayout= (LinearLayout) findViewById(R.id.home_layout);


btnOpenDrawer.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        drawerLayout.openDrawer(Gravity.LEFT);

    }
});


@Override
protected void onResume() {
    super.onResume();


}

@Override
protected void onRestart() {
    super.onRestart();

}

2 个答案:

答案 0 :(得分:1)

创建类级别ClickListener,如 onClickListener ,并在任意位置使用它。

  // Activate Listener
        myView.setOnClickListener(onClickListener);

        // DeActivate Listener
        myView.setOnClickListener(null);

// Listener
View.OnClickListener onClickListener = new View.OnClickListener() {
   @Override
   public void onClick(View v) {

   }
};

答案 1 :(得分:1)

在我看来,错误是您在onCreate方法中设置了OnClickListener。 OnClickListener仅在您创建活动时设置。切换到第二个活动时,OnClickListener将被覆盖,当您返回第一个活动时,将不会设置OnClickListener,因为第一个活动已经创建,只有onResume将被调用。

尝试将代码从onCreate移动到onResume,这样每次活动回到前面时都会设置监听器。