Android : After changing orientation progress bar becomes visible all time

on Wednesday, March 25, 2015


OnDownload method called and anyway progress bar is visible. It happens after changing of orientation. I can't find any mistakes there.. I would be really greatful if you helped me with that. The code is shown below:



package com.example.CourseWork2015.activities;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import com.example.CourseWork2015.R;
import com.example.CourseWork2015.utils.ISubjectDownloading;
import com.example.CourseWork2015.utils.MySubjectAdapter;
import com.example.CourseWork2015.utils.Subject;
import com.parse.ParseUser;

import java.util.ArrayList;
import java.util.List;
public class MainActivity extends ListActivity implements ISubjectDownloading {

private static int ADD_SUBJECT_CODE = 0;
private List<Subject> subjects = new ArrayList<>();
private Button addButton;
private ProgressBar progressBar;
private TextView textView;
private MySubjectAdapter adapter;
private final static String SUBJECTS_KEY = "SUBJECTS";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
textView = (TextView) findViewById(R.id.textView);
if (savedInstanceState == null) {
adapter = new MySubjectAdapter(this, subjects);
loadSubjectsFromLocalStorage();
Subject.registerObserver(this);
setListAdapter(adapter);
}
addButton = (Button) findViewById(R.id.newSubject);
addButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,
AddSubjectActivity.class);
startActivityForResult(intent, ADD_SUBJECT_CODE);
}
});
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == ADD_SUBJECT_CODE && resultCode == RESULT_OK
&& data != null) {
textView.setVisibility(TextView.GONE);
Bundle bundle = data.getExtras();
Subject sub = (Subject) bundle
.getSerializable(AddSubjectActivity.GET_SUBJECT);
saveSubject(sub);
}
}

private void saveSubject(Subject sub) {//add & save
if (!subjects.contains(sub)) {
sub.saveSubject();
adapter.notifyDataSetChanged();
} else {
Toast.makeText(this, "Subject with this name already exists", Toast.LENGTH_SHORT).show();
}
}

private void loadSubjectsFromLocalStorage() {
showProgressBar(true);
Subject.loadSubjectsFromLocalStorage();
}

private void loadSubjectsFromCloud() {
showProgressBar(true);
Subject.loadSubjectsFromCloud();
}

private void showProgressBar(boolean visible) {
//set progress bar visible or invisible
if (!visible) {
progressBar.setVisibility(ProgressBar.GONE);
} else {
progressBar.setVisibility(ProgressBar.VISIBLE);
}
}

private void showMessage(String s) {
textView.setVisibility(TextView.VISIBLE);
textView.setText(s);
}

@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable(SUBJECTS_KEY, (java.io.Serializable) subjects);
}

@Override
protected void onRestoreInstanceState(Bundle state) {
super.onRestoreInstanceState(state);
subjects = (List<Subject>) state.getSerializable(SUBJECTS_KEY);
adapter = new MySubjectAdapter(this, subjects);
setListAdapter(adapter);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
if (id == R.id.update) {
loadSubjectsFromCloud();
return true;
}
if (id == R.id.logout) {
ParseUser.logOut();
Intent intent = new Intent(this, HomeActivity.class);
//clear activity stack to prevent use activities use back button
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
return true;
}
return super.onOptionsItemSelected(item);
}

@Override
public void onDownload(Exception e, List<Subject> subjects) {
if (e == null) {
this.subjects.clear();
this.subjects.addAll(subjects);
adapter.notifyDataSetChanged();
if (subjects.size() == 0) {
showMessage("You have no subjects");
}

} else {
showMessage("Check your internet connection");
}
showProgressBar(false);
}


}


0 comments:

Post a Comment