Experiment: quick switch unified folders

This commit is contained in:
M66B
2023-10-22 15:30:34 +02:00
parent 5cdec1c39f
commit 7f71b21c2c
3 changed files with 88 additions and 2 deletions

View File

@@ -62,6 +62,7 @@ import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentResultListener;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.PreferenceManager;
@@ -137,6 +138,33 @@ public class FragmentBase extends Fragment {
updateSubtitle();
}
protected void setActionBarListener(final LifecycleOwner owner, final View.OnClickListener listener) {
final AppCompatActivity activity = (AppCompatActivity) getActivity();
if (activity == null)
return;
final ActionBar actionbar = activity.getSupportActionBar();
if (actionbar == null)
return;
if ((actionbar.getDisplayOptions() & DISPLAY_SHOW_CUSTOM) == 0)
return;
final View custom = actionbar.getCustomView();
if (custom == null)
return;
owner.getLifecycle().addObserver(new LifecycleObserver() {
@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
public void onAny() {
Lifecycle.State state = owner.getLifecycle().getCurrentState();
custom.setOnClickListener(state.isAtLeast(Lifecycle.State.STARTED) ? listener : null);
if (Lifecycle.State.DESTROYED.equals(state))
owner.getLifecycle().removeObserver(this);
}
});
}
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);