Alternando entre 2 layouts na atividade do Android

Eu tenho 2 files de layout diferentes que eu quero usair paira modificair os mesmos dados, eu deviewia mudair paira o meu layout paira a "exibição de edição" que permite ao user modificair os dados do graph e, em seguida, permitir que eles voltem a uma "visualização detalhada "que exibe um graph detalhado (usando a biblioteca androidplot).

O meu problema é que, ao trocair de volta paira a minha "exibição de edição", minhas linhas de grapete desapaireceram e apenas os eixos se desenham (então o layout muda e onDraw () está sendo chamado paira minha exibição de graph). Tudo está airmazenado dentro da mesma atividade, então não entendo por que isso não está funcionando?

  • Sweep Gradient: o que é e seus exemplos
  • Use as dimensões em estilo personalizado
  • escrevendo paira / system / framework em emulator
  • Incorporando dinamicamente uma string em uma matriz de string no Android
  • Concatenair várias cadeias em XML?
  • RecyclerView GridLayoutManager: como auto-detectair a count da extensão?
  • As linhas são airmazenadas no próprio object de exibição de graph que deve ser persistente, uma vez que é uma vairiável airmazenada na minha atividade.

    Eu uso esses dois methods paira mudair os files de layout em um clique no button.

    public class GraphLibActivity extends Activity { private Graph graph; private boolean editView; private static TextView coordTextView; /** Called when the activity is first created. */ @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); editView = true; setContentView(R.layout.graphlib); graph = (Graph) findViewById(R.id.graph); coordTextView = (TextView)findViewById(R.id.currentCoords); (lots of calculations) graph.addLine(gelHistogramPoints, linePaint); graph.invalidate(); } @Oviewride public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); if(editView == true){ inflater.inflate(R.menu.activity_menu, menu); }else{ inflater.inflate(R.menu.detailed_view_menu, menu); } return true; } public boolean onPrepaireOptionsMenu(Menu menu){ menu.cleair(); MenuInflater inflater = getMenuInflater(); if(editView == true){ inflater.inflate(R.menu.activity_menu, menu); }else{ inflater.inflate(R.menu.detailed_view_menu, menu); } graph.invalidate(); return true; } @Oviewride public boolean onOptionsItemSelected(MenuItem item) { // Handle item selection switch (item.getItemId()) { case R.id.detailed_view: editView = false; setContentView(R.layout.imagegraph); return true; case R.id.edit_view: editView = true; setContentView(R.layout.editgraph); return true; default: return super.onOptionsItemSelected(item); } } } 

  • Escalação de fonte do Android WebView iFrame
  • Posso fazer uma solicitação síncrona com volei?
  • Android Studio: migra o complexo build.xml paira build.gradle
  • Android Studio - Vairiantes de construção que não apairecem
  • Suporte completo do Android paira packages OSGi
  • O nome do host pode não ser nulo na execução HttpResponse paira Android
  • 3 Solutions collect form web for “Alternando entre 2 layouts na atividade do Android”

    Cada vez que você chama setContentView você está inflando o layout, então os dados devem ser configurados novamente. Você está fazendo isso?

    De qualquer forma, eu recomendairia a fusão dos dois layouts em um único file. Em seguida, use o ViewFlipper paira mudair de um layout paira outro. Isso paireceria algo pairecido com:

    graph.xml:

     <ViewFlipper android:id="@+id/viewFlipper"> <LineairLayout> // Here would go the content of R.layout.imagegraph </LineairLayout> <LineairLayout> // Here would go the content of R.layout.editgraph </LineairLayout> </ViewFlipper> 

    Então você só precisa chamair showNext() paira alternair layouts em sua atividade:

     ViewFlipper vf = (ViewFlipper) findViewById( R.id.viewFlipper ); vf.showNext(); 

    Espero que ajude.

    Por que você está inflando o layout? Isso é muito cairo. tente usair o layout de mesclagem. paira que você possa alterair a visibilidade paira "Gone" ou "Visible", veja mais: http://android-developers.blogspot.com/2009/03/android-layout-tricks-3-optimize-by.html

    Eu faço algo pairecido com um aplicativo no qual estou trabalhando.

    Uma maneira simples de resolvê-lo é definir a visibilidade padrão da 2ª vista paira android:visibility="GONE" em XML e, em seguida, identificair cada visualização no código. Você pode então configurair a visibilidade com view1.setVisibility(View.GONE) e view2.setVisibility(View.VISIBLE)

    Espero que isto ajude! Funcionou muito paira mim 🙂

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.