patternjavaMinor
Toggling ActionBar visibility for SherlockFragmentActivity
Viewed 0 times
togglingvisibilityforsherlockfragmentactivityactionbar
Problem
Method implemented in parent class (
Call made from one of Fragments in ViewPager (source)
MinSdkVersion is equal 8, ActionBar support is done by ActionBarSherlock library.
extends SherlockFragmentActivity) (source)ViewPager viewPager; // initialized in onCreate method
public void toggleActionBar() {
try {
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.WRAP_CONTENT);
if (getSupportActionBar().isShowing()) {
getSupportActionBar().hide();
lp.topMargin = 0;
} else {
getSupportActionBar().show();
lp.topMargin = getSupportActionBar().getHeight();
}
viewPager.setLayoutParams(lp);
} catch (Throwable t) {
Log.e(TAG, "Toggle of Actionbar failed", t);
}
}Call made from one of Fragments in ViewPager (source)
try {
((DilbertFragmentActivity) getSherlockActivity()).toggleActionBar();
} catch (Throwable t) {
Log.e(TAG, "Toggle of Actionbar failed", t);
}MinSdkVersion is equal 8, ActionBar support is done by ActionBarSherlock library.
Solution
Three points:
getSupportActionBar()is called four times within the same method. Store it as a local variable and use the variable four times instead, to improve code cleaniness and readability.
- When catching exceptions, be as specific as possible. Catching
Throwableis a horrible idea. Only catch the exceptions you need to catch (Which involves neitherErrors orRuntimeExceptions. You shouldn't even wrap((DilbertFragmentActivity) getSherlockActivity()).toggleActionBar();inside a try-catch statement. If you think that something can go wrong (like aNullPointerException), make sure that it doesn't go wrong before you try to do it (by checking if something is not null for example).
- If
viewPagercan be marked asprivate, it is good practice to also mark it asprivate.
Context
StackExchange Code Review Q#28809, answer score: 2
Revisions (0)
No revisions yet.