2016-07-25 87 views
0

我已創建一個名爲BaseNavigationActivity的活動,該活動創建了NavigationDrawer。所有其他活動都是從這項活動延伸而來。它工作正常,點擊按鈕打開抽屜。如何在onResume活動中重新啓用onClick監聽器

但是當我進入另一個活動,並回到以前的活動。該按鈕停止工作。雖然視覺上按鈕仍然存在,如果我單擊,然後從左側拖動,它會打開Drawer Layout

當我調試它,我發現它調用onRestart()onResume()方法,但沒有被寫進了這些方法的代碼。

那麼我需要在那裏添加代碼嗎?或者是有什麼辦法可以實現onRestart()onClickListneronResume()活動的

的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(); 

} 
+0

我的建議是否解決了您的問題? – babadaba

+0

不,沒有,給'onResume'添加元素導致問題 – Kirmani88

+0

有什麼問題?如果你有崩潰,你可以發佈一個logcat嗎? – babadaba

回答

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) { 

    } 
}; 
+0

謝謝..什麼是myView是指? – Kirmani88

+0

myView是您要在其中應用點擊偵聽器的視圖,在您的案例中是它的btnOpenDrawer。 –

+0

這就是我所做的,我在類級別上添加了'onClickListener',並在'OnCreate''上將它分配給'btnDrawer.setOnClickListener(onClickListener)'。它在第一個活動中運行良好,但是當我回到之前的活動時會發生同樣的問題。 – Kirmani88

1

在我看來,錯誤的是,你在onCreate方法設置你的OnClickListener。 OnClickListener只在創建活動時被設置。當您切換到第二個活動時,OnClickListener將被覆蓋,當您返回到第一個活動時,不會設置OnClickListener,因爲第一個活動已經創建,並且只有onResume會被調用。

試着將你的代碼從onCreate移動到onResume,所以每當活動回到前面時,監聽器都會被設置。