mirror of
https://github.com/TwidereProject/Twidere-Android
synced 2025-02-16 11:41:21 +01:00
fixed fragment crashes
This commit is contained in:
parent
432aa8dd23
commit
4b00aac5c3
@ -214,8 +214,6 @@ public abstract class AbsActivitiesFragment extends AbsContentListRecyclerViewFr
|
||||
final ParcelableStatus status = ParcelableActivityUtils.getActivityStatus(activity);
|
||||
if (status != null) {
|
||||
IntentUtils.openStatus(getContext(), status, null);
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -547,6 +545,7 @@ public abstract class AbsActivitiesFragment extends AbsContentListRecyclerViewFr
|
||||
return new StatusesBusCallback();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected abstract UserKey[] getAccountKeys();
|
||||
|
||||
protected List<ParcelableActivity> getAdapterData() {
|
||||
@ -554,11 +553,6 @@ public abstract class AbsActivitiesFragment extends AbsContentListRecyclerViewFr
|
||||
return adapter.getData();
|
||||
}
|
||||
|
||||
protected void setAdapterData(List<ParcelableActivity> data) {
|
||||
final ParcelableActivitiesAdapter adapter = getAdapter();
|
||||
adapter.setData(data);
|
||||
}
|
||||
|
||||
@ReadPositionTag
|
||||
@Nullable
|
||||
protected String getReadPositionTag() {
|
||||
@ -573,23 +567,26 @@ public abstract class AbsActivitiesFragment extends AbsContentListRecyclerViewFr
|
||||
protected abstract void onLoadingFinished();
|
||||
|
||||
protected void saveReadPosition(int position) {
|
||||
if (getContext() == null) return;
|
||||
final String readPositionTag = getReadPositionTagWithAccounts();
|
||||
if (readPositionTag == null) return;
|
||||
if (position == RecyclerView.NO_POSITION) return;
|
||||
final ParcelableActivitiesAdapter adapter = getAdapter();
|
||||
final ParcelableActivity activity = adapter.getActivity(position);
|
||||
if (activity == null) return;
|
||||
if (mReadStateManager.setPosition(readPositionTag, activity.timestamp)) {
|
||||
mTwitterWrapper.setActivitiesAboutMeUnreadAsync(getAccountKeys(), activity.timestamp);
|
||||
final ParcelableActivity item = adapter.getActivity(position);
|
||||
if (item == null) return;
|
||||
final UserKey[] accountKeys = getAccountKeys();
|
||||
assert accountKeys != null;
|
||||
if (mReadStateManager.setPosition(readPositionTag, item.timestamp)) {
|
||||
mTwitterWrapper.setActivitiesAboutMeUnreadAsync(accountKeys, item.timestamp);
|
||||
}
|
||||
|
||||
for (UserKey accountKey : getAccountKeys()) {
|
||||
for (UserKey accountKey : accountKeys) {
|
||||
final String tag = Utils.getReadPositionTagWithAccounts(getReadPositionTag(),
|
||||
accountKey);
|
||||
mReadStateManager.setPosition(tag, activity.timestamp);
|
||||
mReadStateManager.setPosition(tag, item.timestamp);
|
||||
}
|
||||
|
||||
mReadStateManager.setPosition(getCurrentReadPositionTag(), activity.timestamp, true);
|
||||
mReadStateManager.setPosition(getCurrentReadPositionTag(), item.timestamp, true);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
@ -28,7 +28,6 @@ import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.FragmentActivity;
|
||||
import android.support.v4.content.Loader;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
|
||||
@ -67,19 +66,21 @@ import java.util.List;
|
||||
import static org.mariotaku.twidere.util.DataStoreUtils.getTableNameByUri;
|
||||
|
||||
/**
|
||||
* Displays statuses from database
|
||||
* Created by mariotaku on 14/12/3.
|
||||
*/
|
||||
public abstract class CursorActivitiesFragment extends AbsActivitiesFragment {
|
||||
|
||||
@Override
|
||||
protected void onLoadingFinished() {
|
||||
final UserKey[] accountIds = getAccountKeys();
|
||||
final UserKey[] accountKeys = getAccountKeys();
|
||||
assert accountKeys != null;
|
||||
final ParcelableActivitiesAdapter adapter = getAdapter();
|
||||
if (adapter.getItemCount() > 0) {
|
||||
showContent();
|
||||
} else if (accountIds.length > 0) {
|
||||
} else if (accountKeys.length > 0) {
|
||||
final ErrorInfoStore.DisplayErrorInfo errorInfo = ErrorInfoStore.getErrorInfo(getContext(),
|
||||
mErrorInfoStore.get(getErrorInfoKey(), accountIds[0]));
|
||||
mErrorInfoStore.get(getErrorInfoKey(), accountKeys[0]));
|
||||
if (errorInfo != null) {
|
||||
showEmpty(errorInfo.getIcon(), errorInfo.getMessage());
|
||||
} else {
|
||||
@ -105,6 +106,7 @@ public abstract class CursorActivitiesFragment extends AbsActivitiesFragment {
|
||||
final String table = getTableNameByUri(uri);
|
||||
final String sortOrder = getSortOrder();
|
||||
final UserKey[] accountKeys = getAccountKeys();
|
||||
assert accountKeys != null;
|
||||
final Expression accountWhere = Expression.in(new Column(Activities.ACCOUNT_KEY),
|
||||
new ArgsArray(accountKeys.length));
|
||||
final Expression filterWhere = getFiltersWhere(table), where;
|
||||
@ -129,18 +131,20 @@ public abstract class CursorActivitiesFragment extends AbsActivitiesFragment {
|
||||
return new CursorActivitiesBusCallback();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected UserKey[] getAccountKeys() {
|
||||
final Context context = getContext();
|
||||
if (context == null) return null;
|
||||
final Bundle args = getArguments();
|
||||
final UserKey[] accountKeys = Utils.getAccountKeys(getContext(), args);
|
||||
final UserKey[] accountKeys = Utils.getAccountKeys(context, args);
|
||||
if (accountKeys != null) {
|
||||
return accountKeys;
|
||||
}
|
||||
final FragmentActivity activity = getActivity();
|
||||
if (activity instanceof HomeActivity) {
|
||||
return ((HomeActivity) activity).getActivatedAccountKeys();
|
||||
if (context instanceof HomeActivity) {
|
||||
return ((HomeActivity) context).getActivatedAccountKeys();
|
||||
}
|
||||
return DataStoreUtils.getActivatedAccountKeys(getActivity());
|
||||
return DataStoreUtils.getActivatedAccountKeys(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -196,7 +200,9 @@ public abstract class CursorActivitiesFragment extends AbsActivitiesFragment {
|
||||
@NonNull
|
||||
@Override
|
||||
public UserKey[] getAccountKeysWorker() {
|
||||
return CursorActivitiesFragment.this.getAccountKeys();
|
||||
final UserKey[] accountKeys = CursorActivitiesFragment.this.getAccountKeys();
|
||||
assert accountKeys != null;
|
||||
return accountKeys;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@ -233,7 +239,9 @@ public abstract class CursorActivitiesFragment extends AbsActivitiesFragment {
|
||||
@NonNull
|
||||
@Override
|
||||
public UserKey[] getAccountKeysWorker() {
|
||||
return CursorActivitiesFragment.this.getAccountKeys();
|
||||
final UserKey[] accountKeys = CursorActivitiesFragment.this.getAccountKeys();
|
||||
assert accountKeys != null;
|
||||
return accountKeys;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@ -280,8 +288,11 @@ public abstract class CursorActivitiesFragment extends AbsActivitiesFragment {
|
||||
@Override
|
||||
public void setUserVisibleHint(boolean isVisibleToUser) {
|
||||
super.setUserVisibleHint(isVisibleToUser);
|
||||
if (isVisibleToUser) {
|
||||
for (UserKey accountKey : getAccountKeys()) {
|
||||
Context context = getContext();
|
||||
if (context != null && isVisibleToUser) {
|
||||
final UserKey[] accountKeys = getAccountKeys();
|
||||
assert accountKeys != null;
|
||||
for (UserKey accountKey : accountKeys) {
|
||||
mTwitterWrapper.clearNotificationAsync(getNotificationType(), accountKey);
|
||||
}
|
||||
}
|
||||
|
@ -449,8 +449,7 @@ public class DataStoreUtils implements Constants {
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static UserKey[] getActivatedAccountKeys(final Context context) {
|
||||
if (context == null) return new UserKey[0];
|
||||
public static UserKey[] getActivatedAccountKeys(@NonNull final Context context) {
|
||||
final Cursor cur = context.getContentResolver().query(Accounts.CONTENT_URI,
|
||||
new String[]{Accounts.ACCOUNT_KEY}, Accounts.IS_ACTIVATED + " = 1", null, null);
|
||||
if (cur == null) return new UserKey[0];
|
||||
|
Loading…
x
Reference in New Issue
Block a user