Fix crashes

This commit is contained in:
stom79 2018-10-07 11:18:52 +02:00
parent d980f2e0bc
commit 02bdab4def
2 changed files with 37 additions and 28 deletions

View File

@ -452,22 +452,23 @@ public class Account implements Parcelable {
int startPositionTar = spannableString.toString().indexOf("@"+this.getMoved_to_account().getAcct()); int startPositionTar = spannableString.toString().indexOf("@"+this.getMoved_to_account().getAcct());
int endPositionTar = startPositionTar + ("@"+this.getMoved_to_account().getAcct()).length(); int endPositionTar = startPositionTar + ("@"+this.getMoved_to_account().getAcct()).length();
final String idTar = this.getMoved_to_account().getId(); final String idTar = this.getMoved_to_account().getId();
spannableString.setSpan(new ClickableSpan() { if( endPositionTar <= spannableString.toString().length() && endPositionTar >= startPositionTar)
@Override spannableString.setSpan(new ClickableSpan() {
public void onClick(View textView) { @Override
Intent intent = new Intent(context, ShowAccountActivity.class); public void onClick(View textView) {
Bundle b = new Bundle(); Intent intent = new Intent(context, ShowAccountActivity.class);
b.putString("accountId", idTar); Bundle b = new Bundle();
intent.putExtras(b); b.putString("accountId", idTar);
context.startActivity(intent); intent.putExtras(b);
} context.startActivity(intent);
@Override }
public void updateDrawState(TextPaint ds) { @Override
super.updateDrawState(ds); public void updateDrawState(TextPaint ds) {
} super.updateDrawState(ds);
}, }
startPositionTar, endPositionTar, },
Spanned.SPAN_INCLUSIVE_EXCLUSIVE); startPositionTar, endPositionTar,
Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
} }
return spannableString; return spannableString;
} }

View File

@ -763,9 +763,11 @@ public class Status implements Parcelable{
int matchStart = matcher.start(2); int matchStart = matcher.start(2);
int matchEnd = matcher.end(); int matchEnd = matcher.end();
final String twittername = matcher.group(2); final String twittername = matcher.group(2);
URLSpan[] spans = spannableStringT.getSpans(matchStart, matchEnd, URLSpan.class); if( spannableStringT.length() < matchEnd) {
for (URLSpan span : spans) { URLSpan[] spans = spannableStringT.getSpans(matchStart, matchEnd, URLSpan.class);
spannableStringT.removeSpan(span); for (URLSpan span : spans) {
spannableStringT.removeSpan(span);
}
} }
if( matchEnd <= spannableStringT.toString().length() && matchEnd >= matchStart) if( matchEnd <= spannableStringT.toString().length() && matchEnd >= matchStart)
spannableStringT.setSpan(new ClickableSpan() { spannableStringT.setSpan(new ClickableSpan() {
@ -828,9 +830,11 @@ public class Status implements Parcelable{
for(int startPosition = -1 ; (startPosition = spannableStringT.toString().toLowerCase().indexOf(key.toLowerCase(), startPosition + 1)) != -1 ; startPosition++){ for(int startPosition = -1 ; (startPosition = spannableStringT.toString().toLowerCase().indexOf(key.toLowerCase(), startPosition + 1)) != -1 ; startPosition++){
int endPosition = startPosition + key.length(); int endPosition = startPosition + key.length();
URLSpan[] spans = spannableStringT.getSpans(startPosition, endPosition, URLSpan.class); if( spannableStringT.length() < endPosition) {
for (URLSpan span : spans) { URLSpan[] spans = spannableStringT.getSpans(startPosition, endPosition, URLSpan.class);
spannableStringT.removeSpan(span); for (URLSpan span : spans) {
spannableStringT.removeSpan(span);
}
} }
if( endPosition <= spannableStringT.toString().length() && endPosition >= startPosition) { if( endPosition <= spannableStringT.toString().length() && endPosition >= startPosition) {
spannableStringT.setSpan(new ClickableSpan() { spannableStringT.setSpan(new ClickableSpan() {
@ -891,9 +895,11 @@ public class Status implements Parcelable{
for(int startPosition = -1 ; (startPosition = spannableStringT.toString().toLowerCase().indexOf(targetedAccount.toLowerCase(), startPosition + 1)) != -1 ; startPosition++){ for(int startPosition = -1 ; (startPosition = spannableStringT.toString().toLowerCase().indexOf(targetedAccount.toLowerCase(), startPosition + 1)) != -1 ; startPosition++){
int endPosition = startPosition + targetedAccount.length(); int endPosition = startPosition + targetedAccount.length();
URLSpan[] spans = spannableStringT.getSpans(startPosition, endPosition, URLSpan.class); if( spannableStringT.length() < endPosition) {
for (URLSpan span : spans) { URLSpan[] spans = spannableStringT.getSpans(startPosition, endPosition, URLSpan.class);
spannableStringT.removeSpan(span); for (URLSpan span : spans) {
spannableStringT.removeSpan(span);
}
} }
if( endPosition <= spannableStringT.toString().length() && endPosition >= startPosition) if( endPosition <= spannableStringT.toString().length() && endPosition >= startPosition)
spannableStringT.setSpan(new ClickableSpan() { spannableStringT.setSpan(new ClickableSpan() {
@ -925,9 +931,11 @@ public class Status implements Parcelable{
while (matcher.find()){ while (matcher.find()){
int matchStart = matcher.start(1); int matchStart = matcher.start(1);
int matchEnd = matcher.end(); int matchEnd = matcher.end();
URLSpan[] spans = spannableStringT.getSpans(matchStart, matchEnd, URLSpan.class); if( spannableStringT.length() < matchEnd) {
for (URLSpan span : spans) { URLSpan[] spans = spannableStringT.getSpans(matchStart, matchEnd, URLSpan.class);
spannableStringT.removeSpan(span); for (URLSpan span : spans) {
spannableStringT.removeSpan(span);
}
} }
final String tag = spannableStringT.toString().substring(matchStart, matchEnd); final String tag = spannableStringT.toString().substring(matchStart, matchEnd);
if( matchEnd <= spannableStringT.toString().length() && matchEnd >= matchStart) if( matchEnd <= spannableStringT.toString().length() && matchEnd >= matchStart)