В настоящее время я работаю над приложением калькулятора строк для Android. Когда нажимается кнопка "button", она должна добавить два текстовых изображения в линейную строку "holder_main_layout", которая находится в пределах прокрутки. Одним из текстовых представлений является текстовое значение текста редактирования слева, другое - оцененный ответ справа. Все это работает, но когда я переориентирую телефон (от вертикали до пейзажа или пейзажа в другой пейзаж), линейный макет снова пуст. Я знаю, что он не умен, чтобы оставить все эти тексты без возможности доступа к ним, но это доказательство концепции на данный момент.
Почему scrollview пуст, когда я поворачиваю телефон. И как я могу предотвратить это.
public class main extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final LinearLayout holder_main_layout=(LinearLayout)findViewById(R.id.linearLayout2);
final CalculatorBase calc=new CalculatorBase();
final Button button = (Button) findViewById(R.id.button1);
final ScrollView scroller=(ScrollView)findViewById(R.id.scrollView1);
final main self=this;
final EditText input_text=(EditText)findViewById(R.id.editText1);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
TextView input_view=new TextView(self);
input_view.setText(input_text.getText());
holder_main_layout.addView(input_view);
TextView output_view=new TextView(self);
output_view.setText(String.valueOf(calc.eval_expression(input_text.getText().toString())));
output_view.setGravity(5);
holder_main_layout.addView(output_view);
input_text.setText("");
scroller.fullScroll(ScrollView.FOCUS_UP);
}
});
}
}
По умолчанию Android уничтожает и повторно создает активность при изменении ориентации. Вы можете сделать две вещи:
Сначала попробуйте второй метод. Измените свой манифест, чтобы включить строку android:configChanges
в определении Activity:
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
Затем поместите следующий код в код операции:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}