Skip to content

Commit

Permalink
Saving log instance state.
Browse files Browse the repository at this point in the history
  • Loading branch information
rumboalla committed Sep 1, 2016
1 parent 4680950 commit b51698e
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 19 deletions.
45 changes: 27 additions & 18 deletions app/src/main/java/com/apkupdater/activity/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ public class MainActivity
@ViewById(R.id.settings_container)
FrameLayout mSettingsLayout;

@ViewById(R.id.log_container)
FrameLayout mLogLayout;

SettingsFragment mSettingsFragment;
LogFragment_ mLogFragment;

Expand Down Expand Up @@ -115,7 +118,14 @@ void init(

// Add the settings fragment and configure the correct state
mSettingsFragment = new SettingsFragment();
if (!(getSupportFragmentManager().findFragmentById(R.id.settings_container) instanceof SettingsFragment)) {
getSupportFragmentManager().beginTransaction().add(R.id.settings_container, mSettingsFragment).commit();
}

mLogFragment = new LogFragment_();
if (!(getSupportFragmentManager().findFragmentById(R.id.log_container) instanceof LogFragment_)) {
getSupportFragmentManager().beginTransaction().add(R.id.log_container, mLogFragment).commit();
}

if (mAppState.getSettingsActive()) {
switchSettings(true);
Expand All @@ -126,35 +136,25 @@ void init(

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

private void switchTabToFragment(
private void switchSettings(
boolean b
) {
if (b) {
mTabLayout.setVisibility(View.GONE);
mViewPager.setVisibility(View.GONE);
mSettingsLayout.setVisibility(View.VISIBLE);
mLogLayout.setVisibility(View.GONE);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
} else {
mTabLayout.setVisibility(View.VISIBLE);
mViewPager.setVisibility(View.VISIBLE);
mSettingsLayout.setVisibility(View.GONE);
mLogLayout.setVisibility(View.GONE);
getSupportActionBar().setTitle(getString(R.string.app_name));
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
}
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

private void switchSettings(
boolean b
) {
switchTabToFragment(b);

if (b) {
getSupportFragmentManager().beginTransaction().replace(R.id.settings_container, mSettingsFragment).commit();
getSupportActionBar().setTitle(getString(R.string.action_settings));
}

getSupportActionBar().setTitle(getString(R.string.action_settings));
mAppState.setSettingsActive(b);
}

Expand All @@ -163,13 +163,22 @@ private void switchSettings(
private void switchLog(
boolean b
) {
switchTabToFragment(b);

if (b) {
getSupportFragmentManager().beginTransaction().replace(R.id.settings_container, mLogFragment).commit();
getSupportActionBar().setTitle(getString(R.string.action_log));
mTabLayout.setVisibility(View.GONE);
mViewPager.setVisibility(View.GONE);
mSettingsLayout.setVisibility(View.GONE);
mLogLayout.setVisibility(View.VISIBLE);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
} else {
mTabLayout.setVisibility(View.VISIBLE);
mViewPager.setVisibility(View.VISIBLE);
mSettingsLayout.setVisibility(View.GONE);
mLogLayout.setVisibility(View.GONE);
getSupportActionBar().setTitle(getString(R.string.app_name));
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
}

getSupportActionBar().setTitle(getString(R.string.action_log));
mAppState.setLogActive(b);
}

Expand Down
6 changes: 5 additions & 1 deletion app/src/main/java/com/apkupdater/adapter/LogAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,11 @@ public LogAdapter(
@AfterViews
public void init(
) {
mBus.register(this);
try {
mBus.register(this);
} catch (IllegalArgumentException ignored) {
// Already registered
}
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Expand Down
37 changes: 37 additions & 0 deletions app/src/main/java/com/apkupdater/fragment/LogFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.preference.PreferenceFragmentCompat;
import android.widget.ListView;

import com.apkupdater.R;
import com.apkupdater.adapter.LogAdapter;
import com.apkupdater.model.LogMessage;
import com.google.gson.Gson;

import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.Bean;
Expand All @@ -28,17 +32,50 @@ public class LogFragment
@Bean
LogAdapter mAdapter;

Bundle mSavedInstance;

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

@Override
public void onCreate(
@Nullable Bundle savedInstanceState
) {
mSavedInstance = savedInstanceState;
super.onCreate(savedInstanceState);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

@AfterViews
void init(
) {
// Try to get data from savedInstance
if (mSavedInstance != null) {
try {
LogMessage[] messages = new Gson().fromJson(mSavedInstance.getString("values"), LogMessage[].class);
for (LogMessage m : messages) {
mAdapter.add(m);
}
} catch (Exception ignored) {
}
}

mListView.setAdapter(mAdapter);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

@Override
public void onSaveInstanceState(
Bundle outState
) {
super.onSaveInstanceState(outState);

// Serialize to json and put it on savedinstance
outState.putString("values", new Gson().toJson(mAdapter.getValues()));
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
6 changes: 6 additions & 0 deletions app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,12 @@
android:layout_height="match_parent"
android:visibility="gone"
/>
<FrameLayout
android:id="@+id/log_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
/>
</LinearLayout>

</android.support.design.widget.CoordinatorLayout>

0 comments on commit b51698e

Please sign in to comment.