2014-10-29 3 views
0

У меня проблема с моим приложением. если я нажму кнопку, чтобы остановить ProgressBarIndeterminate в панели действий, когда я поворачиваю экран, он снова появляется. могу я остановить его навсегда? благодаряProgressBarIndeterminateVisibility появляется при изменении вращения

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 
    setContentView(R.layout.activity_main); 

    setProgressBarIndeterminateVisibility(true); 

} 

public void test(View v) { 
    setProgressBarIndeterminateVisibility(false); 
}  

извините за мой английский

ответ

1

При повороте экрана, то активность будет создаваться заново (onCreate получит снова вызывалась), так что вы будете называть setProgressBarIndeterminateVisibility(true), который сделает это снова.

Чтобы отслеживать, нажали ли вы кнопку остановки, вам нужно как-то сохранить состояние (подумайте об осуществлении onSaveInstanceState, а затем извлеките сохраненное значение в onCreate или сохраните состояние в общей настройке/базе данных).

onSaveInstanceState -> вызывается, когда ваша активность обрывается из-за вращения

private boolean showProgressBarVisibility = true; //always show the first time 

@Override 
public void onCreate(Bundle savedInstanceState){ 

    if(savedInstanceState != null && savedInstanceState.containsKey("user3744384_pressed_the_button"){ 
     showProgressBarVisibility = false 
    } 

    setProgressBarIndeterminateVisibility(showProgressBarVisibility); 
} 

@Override 
public void onSaveInstanceState(Bundle outState){ 
    super.onSaveInstanceState(outState); 
    outState.putString("user3744384_pressed_the_button", true); 
} 
0

сделать что-то подобное в OnCreate:

if(savedInstanceState !=null){ 

setProgressBarIndeterminateVisibility(false); 
} 

но вы должны также сохранить состояние в public void onSaveInstanceState(Bundle ...). исследование того, как деятельность спасает их состояние.

0

Когда изменения ориентации андроида убивают вашу деятельность и вызывается onCreate .. вы можете сохранить состояние своего приложения и восстановить его.

переопределить этот метод, чтобы сохранить состояние

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 

    savedInstanceState.putString(key, yourstatevariable); 

} 

и получить переменные состояния в OnCreate

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_one); 

if (savedInstanceState != null) { 

     String yourstatevariable = savedInstanceState.get(key); 

    } 

} 
Смежные вопросы