Make back behaviour work better for manage repos/installed apps/search.
This commit is contained in:
parent
43a9a9d229
commit
60a2ebe9fa
@ -301,7 +301,10 @@
|
||||
android:name=".AppUpdateStatusService"
|
||||
android:exported="false" />
|
||||
|
||||
<activity android:name=".views.main.MainActivity">
|
||||
<activity
|
||||
android:name=".views.main.MainActivity"
|
||||
android:launchMode="singleTop"
|
||||
android:windowSoftInputMode="adjustResize">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
|
@ -6,7 +6,7 @@ import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.design.widget.BottomNavigationView;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.text.TextUtils;
|
||||
@ -14,6 +14,8 @@ import android.view.MenuItem;
|
||||
import android.widget.Toast;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
|
||||
import com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx;
|
||||
|
||||
import org.fdroid.fdroid.AppDetails;
|
||||
import org.fdroid.fdroid.AppDetails2;
|
||||
import org.fdroid.fdroid.FDroidApp;
|
||||
@ -42,7 +44,7 @@ import org.fdroid.fdroid.views.swap.SwapWorkflowActivity;
|
||||
* When switching from one screen to the next, we stay within this activity. The new screen will
|
||||
* get inflated (if required)
|
||||
*/
|
||||
public class MainActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener {
|
||||
public class MainActivity extends AppCompatActivity implements BottomNavigationViewEx.OnNavigationItemSelectedListener {
|
||||
|
||||
private static final String TAG = "MainActivity";
|
||||
|
||||
@ -52,14 +54,17 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationV
|
||||
|
||||
private static final String ACTION_ADD_REPO = "org.fdroid.fdroid.MainActivity.ACTION_ADD_REPO";
|
||||
|
||||
private static final String STATE_SELECTED_MENU_ID = "selectedMenuId";
|
||||
|
||||
private static final int REQUEST_SWAP = 3;
|
||||
|
||||
private RecyclerView pager;
|
||||
private MainViewAdapter adapter;
|
||||
private BottomNavigationView bottomNavigation;
|
||||
private BottomNavigationViewEx bottomNavigation;
|
||||
private int selectedMenuId = R.id.whats_new;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.activity_main);
|
||||
@ -71,15 +76,30 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationV
|
||||
pager.setLayoutManager(new NonScrollingHorizontalLayoutManager(this));
|
||||
pager.setAdapter(adapter);
|
||||
|
||||
bottomNavigation = (BottomNavigationView) findViewById(R.id.bottom_navigation);
|
||||
bottomNavigation = (BottomNavigationViewEx) findViewById(R.id.bottom_navigation);
|
||||
bottomNavigation.setOnNavigationItemSelectedListener(this);
|
||||
|
||||
if (savedInstanceState != null) {
|
||||
selectedMenuId = savedInstanceState.getInt(STATE_SELECTED_MENU_ID, R.id.whats_new);
|
||||
}
|
||||
setSelectedMenuInNav();
|
||||
|
||||
initialRepoUpdateIfRequired();
|
||||
|
||||
Intent intent = getIntent();
|
||||
handleSearchOrAppViewIntent(intent);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(Bundle outState) {
|
||||
outState.putInt(STATE_SELECTED_MENU_ID, selectedMenuId);
|
||||
super.onSaveInstanceState(outState);
|
||||
}
|
||||
|
||||
private void setSelectedMenuInNav() {
|
||||
bottomNavigation.setCurrentItem(adapter.adapterPositionFromItemId(selectedMenuId));
|
||||
}
|
||||
|
||||
/**
|
||||
* The first time the app is run, we will have an empty app list. To deal with this, we will
|
||||
* attempt to update with the default repo. However, if we have tried this at least once, then
|
||||
@ -103,7 +123,8 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationV
|
||||
if (getIntent().hasExtra(EXTRA_VIEW_UPDATES)) {
|
||||
getIntent().removeExtra(EXTRA_VIEW_UPDATES);
|
||||
pager.scrollToPosition(adapter.adapterPositionFromItemId(R.id.updates));
|
||||
bottomNavigation.findViewById(R.id.updates).performClick();
|
||||
selectedMenuId = R.id.updates;
|
||||
setSelectedMenuInNav();
|
||||
}
|
||||
|
||||
// AppDetails 2 and RepoDetailsActivity set different NFC actions, so reset here
|
||||
@ -131,6 +152,7 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationV
|
||||
@Override
|
||||
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
|
||||
pager.scrollToPosition(((MainViewAdapter) pager.getAdapter()).adapterPositionFromItemId(item.getItemId()));
|
||||
selectedMenuId = item.getItemId();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<android.support.design.widget.BottomNavigationView
|
||||
<com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx
|
||||
android:id="@+id/bottom_navigation"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
Loading…
x
Reference in New Issue
Block a user