addView в linearlayout в просмотре прокрутки стирается при обновлении - PullRequest
1 голос
/ 27 марта 2011

В настоящее время я работаю над калькулятором ввода строки для Android.Когда кнопка «кнопка» нажата, она должна добавить два текстовых представления в linearlayout «holder_main_layout», который находится внутри прокрутки.Одно из текстовых представлений - это текстовое значение редактируемого текста слева, другое - оценочный ответ справа.Все это работает, но когда я переориентирую телефон (с вертикального на ландшафтный или ландшафтный на другой ландшафт), линейное расположение снова становится пустым.Я знаю, что не стоит оставлять все эти текстовые просмотры без доступа к ним, но на данный момент это доказательство концепции.

Почему прокрутка экрана пуста, когда я поворачиваю телефон.И как я могу предотвратить это.

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);
        }
    });

}

}

1 Ответ

2 голосов
/ 27 марта 2011

По умолчанию Android уничтожает и воссоздает Активность при изменении ориентации. Вы можете сделать две вещи:

Попробуйте сначала второй метод. Измените манифест, включив в определение действия строку android:configChanges:

<activity android:name=".MyActivity"
      android:configChanges="orientation|keyboardHidden"
      android:label="@string/app_name">

Затем поместите следующий метод в код действия:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}
...