improved settings screen

fixed crashes
This commit is contained in:
Mariotaku Lee 2016-06-27 08:24:47 +08:00
parent 1a0843f17c
commit b20f0431fb
3 changed files with 33 additions and 22 deletions

View File

@ -27,7 +27,6 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.content.res.Configuration;
import android.content.res.TypedArray;
import android.database.ContentObserver;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
@ -51,6 +50,7 @@ import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatDelegate;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.TintTypedArray;
import android.support.v7.widget.Toolbar;
import android.util.SparseIntArray;
import android.view.Gravity;
@ -111,6 +111,8 @@ import java.util.List;
public class HomeActivity extends BaseActivity implements OnClickListener, OnPageChangeListener,
SupportFragmentCallback, OnLongClickListener, DrawerLayout.DrawerListener {
private static final int[] HOME_AS_UP_ATTRS = {android.support.v7.appcompat.R.attr.homeAsUpIndicator};
private final Handler mHandler = new Handler();
private final ContentObserver mAccountChangeObserver = new AccountChangeObserver(this, mHandler);
@ -156,8 +158,8 @@ public class HomeActivity extends BaseActivity implements OnClickListener, OnPag
@Override
public Drawable getThemeUpIndicator() {
final int[] attrs = {android.support.v7.appcompat.R.attr.homeAsUpIndicator};
final TypedArray a = obtainStyledAttributes(attrs);
final TintTypedArray a = TintTypedArray.obtainStyledAttributes(
getActionBarThemedContext(), null, HOME_AS_UP_ATTRS);
final Drawable result = a.getDrawable(0);
a.recycle();
return result;

View File

@ -227,14 +227,17 @@ public class SettingsActivity extends BaseActivity implements OnItemClickListene
return mShouldNotifyChange;
}
@Override
public boolean onSupportNavigateUp() {
if (notifyUnsavedChange()) {
return true;
}
return super.onSupportNavigateUp();
}
@Override
public void onBackPressed() {
if (isTopSettings() && shouldNotifyChange()) {
final RestartConfirmDialogFragment df = new RestartConfirmDialogFragment();
df.show(getSupportFragmentManager(), "restart_confirm");
return;
}
if (notifyUnsavedChange()) return;
super.onBackPressed();
}
@ -277,6 +280,15 @@ public class SettingsActivity extends BaseActivity implements OnItemClickListene
mSlidingPaneLayout.closePane();
}
private boolean notifyUnsavedChange() {
if (isTopSettings() && shouldNotifyChange()) {
final RestartConfirmDialogFragment df = new RestartConfirmDialogFragment();
df.show(getSupportFragmentManager(), "restart_confirm");
return true;
}
return false;
}
static class EntriesAdapter extends BaseAdapter {
static final int VIEW_TYPE_PREFERENCE_ENTRY = 0;

View File

@ -22,7 +22,6 @@ package org.mariotaku.twidere.fragment;
import android.animation.ArgbEvaluator;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
@ -61,7 +60,6 @@ import android.support.v7.widget.Toolbar;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.text.util.Linkify;
import android.util.Log;
import android.util.Pair;
import android.view.KeyEvent;
import android.view.LayoutInflater;
@ -969,6 +967,7 @@ public class UserFragment extends BaseSupportFragment implements OnClickListener
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
final Context context = getContext();
final AsyncTwitterWrapper twitter = mTwitterWrapper;
final ParcelableUser user = getUser();
final UserRelationship userRelationship = mRelationship;
@ -1099,33 +1098,31 @@ public class UserFragment extends BaseSupportFragment implements OnClickListener
return true;
}
case R.id.user_mentions: {
IntentUtils.openUserMentions(getActivity(), user.account_key, user.screen_name);
IntentUtils.openUserMentions(context, user.account_key, user.screen_name);
return true;
}
case R.id.saved_searches: {
IntentUtils.openSavedSearches(getActivity(), user.account_key);
IntentUtils.openSavedSearches(context, user.account_key);
return true;
}
case R.id.scheduled_statuses: {
IntentUtils.openScheduledStatuses(getActivity(), user.account_key);
IntentUtils.openScheduledStatuses(context, user.account_key);
return true;
}
case R.id.open_in_browser: {
final Uri uri = LinkCreator.getUserWebLink(user);
final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setPackage(IntentUtils.getDefaultBrowserPackage(getContext(), uri, true));
startActivity(intent);
intent.setPackage(IntentUtils.getDefaultBrowserPackage(context, uri, true));
if (intent.resolveActivity(context.getPackageManager()) != null) {
startActivity(intent);
}
return true;
}
default: {
if (item.getIntent() != null) {
try {
startActivity(item.getIntent());
} catch (final ActivityNotFoundException e) {
Log.w(LOGTAG, e);
return false;
}
final Intent intent = item.getIntent();
if (intent != null && intent.resolveActivity(context.getPackageManager()) != null) {
startActivity(intent);
}
break;
}