package org.wikipedia.settings; import android.content.ActivityNotFoundException; import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceViewHolder; import android.util.AttributeSet; import android.widget.Toast; import org.wikipedia.R; public class PreferenceMultiLine extends Preference { public PreferenceMultiLine(Context ctx, AttributeSet attrs, int defStyle) { super(ctx, attrs, defStyle); } public PreferenceMultiLine(Context ctx, AttributeSet attrs) { super(ctx, attrs); } public PreferenceMultiLine(Context ctx) { super(ctx); } @Override public void onBindViewHolder(@NonNull PreferenceViewHolder holder) { super.onBindViewHolder(holder); // Intercept the click listener for this preference, and if the preference has an intent, // launch the intent ourselves, so that we can catch the exception if the intent fails. // (but only do this if the preference doesn't already have a click listener) if (this.getOnPreferenceClickListener() == null) { this.setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { if (preference.getIntent() != null) { try { getContext().startActivity(preference.getIntent()); } catch (ActivityNotFoundException e) { Toast.makeText(getContext(), getContext().getString(R.string.error_browser_not_found), Toast.LENGTH_LONG).show(); } return true; } return false; } }); } } }