X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Factivity%2FMainActivity.java;h=5c2c6f5c1d23f616ff480606dc80931d39bcb1e6;hp=52436c4d85b55bac04bb7afb296f9b2e539999b7;hb=dc0b910128c5c1e532fc5c957e62f0276b0abd10;hpb=d14edf52b78a295408db62145dd321414fea8513 diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java b/app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java index 52436c4d..5c2c6f5c 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java @@ -35,8 +35,9 @@ import android.view.MenuItem; import android.view.View; import android.widget.LinearLayout; -import net.ktnx.mobileledger.ui.account_summary.AccountSummaryFragment; import net.ktnx.mobileledger.R; +import net.ktnx.mobileledger.model.LedgerAccount; +import net.ktnx.mobileledger.ui.account_summary.AccountSummaryFragment; import net.ktnx.mobileledger.ui.transaction_list.TransactionListFragment; public class MainActivity extends AppCompatActivity { @@ -44,6 +45,7 @@ public class MainActivity extends AppCompatActivity { private AccountSummaryFragment accountSummaryFragment; private TransactionListFragment transactionListFragment; private Fragment currentFragment = null; + private FragmentManager fragmentManager; @Override protected void onCreate(Bundle savedInstanceState) { @@ -70,33 +72,10 @@ public class MainActivity extends AppCompatActivity { e.printStackTrace(); } - onAccountSummaryClicked(null); - } + fragmentManager = getSupportFragmentManager(); - @Override - protected void onStart() { - super.onStart(); - LinearLayout grp = drawer.findViewById(R.id.nav_actions); - for (int i = 0; i < grp.getChildCount(); i++) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - grp.getChildAt(i).setBackgroundColor( - getResources().getColor(R.color.drawer_background, getTheme())); - } - else { - grp.getChildAt(i) - .setBackgroundColor(getResources().getColor(R.color.drawer_background)); - } - } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - drawer.findViewById(R.id.nav_account_summary).setBackgroundColor( - getResources().getColor(R.color.table_row_even_bg, getTheme())); - } - else { - drawer.findViewById(R.id.nav_account_summary) - .setBackgroundColor(getResources().getColor(R.color.table_row_even_bg)); - } + onAccountSummaryClicked(null); } - public void fab_new_transaction_clicked(View view) { Intent intent = new Intent(this, NewTransactionActivity.class); startActivity(intent); @@ -112,7 +91,7 @@ public class MainActivity extends AppCompatActivity { Intent intent = new Intent(this, SettingsActivity.class); startActivity(intent); } - private void markDrawerItemCurrent(int id) { + public void markDrawerItemCurrent(int id) { View item = drawer.findViewById(id); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { item.setBackgroundColor(getResources().getColor(R.color.table_row_even_bg, getTheme())); @@ -163,24 +142,50 @@ public class MainActivity extends AppCompatActivity { } } public void onAccountSummaryClicked(View view) { - markDrawerItemCurrent(R.id.nav_account_summary); drawer.closeDrawers(); - FragmentManager fm = getSupportFragmentManager(); - FragmentTransaction ft = fm.beginTransaction(); - currentFragment = accountSummaryFragment = new AccountSummaryFragment(); + resetFragmentBackStack(); + + showAccountSummaryFragment(); + } + private void showAccountSummaryFragment() { + FragmentTransaction ft = fragmentManager.beginTransaction(); + accountSummaryFragment = new AccountSummaryFragment(); ft.replace(R.id.root_frame, accountSummaryFragment); ft.commit(); + currentFragment = accountSummaryFragment; } public void onLatestTransactionsClicked(View view) { - markDrawerItemCurrent(R.id.nav_latest_transactions); drawer.closeDrawers(); - FragmentManager fm = getSupportFragmentManager(); - FragmentTransaction ft = fm.beginTransaction(); - currentFragment = transactionListFragment = new TransactionListFragment(); + resetFragmentBackStack(); + + showTransactionsFragment(null); + } + private void resetFragmentBackStack() { +// fragmentManager.popBackStack(0, FragmentManager.POP_BACK_STACK_INCLUSIVE); + } + private void showTransactionsFragment(LedgerAccount account) { + FragmentTransaction ft = fragmentManager.beginTransaction(); + if (transactionListFragment == null) { + Log.d("flow", "MainActivity creating TransactionListFragment"); + transactionListFragment = new TransactionListFragment(); + } + Bundle bundle = new Bundle(); + if (account != null) { + bundle.putString(TransactionListFragment.BUNDLE_KEY_FILTER_ACCOUNT_NAME, + account.getName()); + } + transactionListFragment.setArguments(bundle); ft.replace(R.id.root_frame, transactionListFragment); + if (account != null) + ft.addToBackStack(getResources().getString(R.string.title_activity_transaction_list)); ft.commit(); + + currentFragment = transactionListFragment; + } + public void showAccountTransactions(LedgerAccount account) { + showTransactionsFragment(account); } @Override public void onBackPressed() { @@ -189,6 +194,9 @@ public class MainActivity extends AppCompatActivity { drawer.closeDrawer(GravityCompat.START); } else { + Log.d("fragments", + String.format("manager stack: %d", fragmentManager.getBackStackEntryCount())); + super.onBackPressed(); } }