remove dynamically and android dynamic view orientation layout-inflater

dynamically - Las vistas añadidas dinámicamente desaparecen en orientación en Android



dynamically add and remove views in android (3)

Agregue la siguiente línea a la actividad TestContainerActivity

android:ConfigChanges="keyboardHidden|orientation"

He creado las vistas para agregar dinámicamente a un diseño desde un clic de botón, pero cuando giro el paisaje del dispositivo, las vistas desaparecen. ¿Podría alguien mirar mi código y explicar cómo evitar que esto suceda?

Aquí está el código:

public class TestContainerActivity extends Activity implements OnClickListener { LinearLayout containerLayout; Button testButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test_container); testButton = (Button)findViewById(R.id.testContainerButton1); testButton.setOnClickListener(this); containerLayout = (LinearLayout)findViewById(R.id.testContainerLayout); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.test_container, menu); return true; } @Override public void onClick(View v) { // TODO Auto-generated method stub if(v==testButton){ createNewLayout(); } } public void createNewLayout(){ LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); View addView = layoutInflater.inflate(R.layout.container, null); TextView textviewTest = (TextView)addView.findViewById(R.id.containerTextView4); textviewTest.setText("TextView"); containerLayout.addView(addView); } }


Es mejor tratar de recrear el diseño en la nueva orientación, en lugar de simplemente prevenir el cambio de orientación.

En su verificación onCreate, si hay una instancia guardada (como resultado del cambio de orientación), por ej.

if (savedInstanceState == null) { //create new button layout if previously clicked } else { //normal start }

Es posible que deba conservar algunos valores (ya sea en Prefs compartidas o en SavedInstanceState).

Este enfoque es más difícil que bloquear la orientación, pero es un mejor enfoque a largo plazo y bien vale la pena el esfuerzo de investigación.


Agregue esta línea en sus etiquetas manifest.xml.

android:configChanges="keyboardHidden|orientation|screenSize"

Esto evitará que su actividad se recree en el cambio de orientación.