fixed crash while add/switch netowrk when language is not english(hindi)
This commit is contained in:
+6
-12
@@ -103,22 +103,16 @@ public class AddSwitchChainNetworkFragment extends BaseDAppsFragment {
|
||||
Button btnAddSwitchNetwork = view.findViewById(R.id.fragment_add_switch_eth_chain_btn_sign);
|
||||
if (mPanelType == ADD_ETHEREUM_CHAIN) {
|
||||
btnAddSwitchNetwork.setText(R.string.approve);
|
||||
SpannableString addChainHeading = Utils.createSpannableString(
|
||||
getString(R.string.brave_wallet_allow_add_network_description),
|
||||
getString(R.string.brave_wallet_learn_more), new ClickableSpan() {
|
||||
@Override
|
||||
public void onClick(@NonNull View widget) {
|
||||
TabUtils.openUrlInNewTab(false, Utils.BRAVE_SUPPORT_URL);
|
||||
TabUtils.bringChromeTabbedActivityToTheTop(getActivity());
|
||||
}
|
||||
}, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
|
||||
TextView tvAddChainTitle = view.findViewById(R.id.fragment_add_switch_chain_tv_title);
|
||||
tvAddChainTitle.setText(R.string.brave_wallet_allow_add_network_heading);
|
||||
|
||||
TextView addChainDesc = view.findViewById(R.id.fragment_add_switch_chain_tv_text);
|
||||
Spanned spannedDescriptionText = Utils.createSpanForSurroundedPhrase(
|
||||
getContext(), R.string.brave_wallet_allow_add_network_description, (v) -> {
|
||||
TabUtils.openUrlInNewTab(false, Utils.BRAVE_SUPPORT_URL);
|
||||
TabUtils.bringChromeTabbedActivityToTheTop(getActivity());
|
||||
});
|
||||
addChainDesc.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
addChainDesc.setText(addChainHeading);
|
||||
addChainDesc.setText(spannedDescriptionText);
|
||||
|
||||
} else if (mPanelType == SWITCH_ETHEREUM_CHAIN) {
|
||||
btnAddSwitchNetwork.setText(R.string.brave_wallet_allow_change_network_button);
|
||||
|
||||
@@ -29,9 +29,11 @@ import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.text.Html;
|
||||
import android.text.Spannable;
|
||||
import android.text.SpannableString;
|
||||
import android.text.Spanned;
|
||||
import android.text.style.ClickableSpan;
|
||||
import android.text.style.URLSpan;
|
||||
import android.util.Pair;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
@@ -40,6 +42,7 @@ import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
@@ -87,6 +90,7 @@ import org.chromium.chrome.browser.crypto_wallet.model.WalletListItemModel;
|
||||
import org.chromium.chrome.browser.crypto_wallet.observers.ApprovedTxObserver;
|
||||
import org.chromium.chrome.browser.profiles.Profile;
|
||||
import org.chromium.chrome.browser.util.TabUtils;
|
||||
import org.chromium.ui.text.NoUnderlineClickableSpan;
|
||||
import org.chromium.ui.widget.Toast;
|
||||
import org.chromium.url.GURL;
|
||||
|
||||
@@ -1532,10 +1536,37 @@ public class Utils {
|
||||
String text, ClickableSpan clickListener, int startIndex, int endIndex, int flags) {
|
||||
assert null != text;
|
||||
SpannableString spannableString = new SpannableString(text);
|
||||
spannableString.setSpan(clickListener, startIndex, endIndex, flags);
|
||||
if (startIndex >= 0 && endIndex > startIndex && endIndex < text.length()) {
|
||||
spannableString.setSpan(clickListener, startIndex, endIndex, flags);
|
||||
}
|
||||
return spannableString;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method should be used to make substring of a string clickable
|
||||
* Example: This is <ph name="START">%1$s</ph>Clickable<ph name="END">%2$s</ph> text.
|
||||
*
|
||||
* @param context The context
|
||||
* @param stringRes The id of resource string
|
||||
* @param onClickListener The callback when clickable substring is clicked.
|
||||
*/
|
||||
public static Spannable createSpanForSurroundedPhrase(
|
||||
Context context, @StringRes int stringRes, View.OnClickListener onClickListener) {
|
||||
String htmlString =
|
||||
String.format(context.getResources().getString(stringRes), "<a href=\"\">", "</a>");
|
||||
Spannable spannable = new SpannableString(AndroidUtils.formateHTML(htmlString));
|
||||
URLSpan[] spans = spannable.getSpans(0, spannable.length(), URLSpan.class);
|
||||
for (URLSpan urlSpan : spans) {
|
||||
NoUnderlineClickableSpan linkSpan = new NoUnderlineClickableSpan(context,
|
||||
R.color.brave_theme_color, (view) -> { onClickListener.onClick(view); });
|
||||
int spanStart = spannable.getSpanStart(urlSpan);
|
||||
int spanEnd = spannable.getSpanEnd(urlSpan);
|
||||
spannable.setSpan(linkSpan, spanStart, spanEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
spannable.removeSpan(urlSpan);
|
||||
}
|
||||
return spannable;
|
||||
}
|
||||
|
||||
public static SpannableString createSpannableString(
|
||||
String text, String spanText, ClickableSpan clickListener, int flags) {
|
||||
assert null != spanText;
|
||||
|
||||
Reference in New Issue
Block a user