2016-04-24 10 views
-2

So habe ich zwei Layouts und ich wechsle auf das zweite Layout, wenn die ImageButton gedrückt wird. Wie kann ich auf meinem Nexus 6 das erste Layout beibehalten? Wenn ich also im zweiten Layout bin und zurück drücke, wird das erste Layout angezeigt?Gehen Sie zu einem früheren Layout?

public class MainActivity extends AppCompatActivity { 

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

     ImageButton ImageButton = (ImageButton) findViewById(R.id.image); 

     ImageButton.setBackgroundColor(1); 

     ImageButton.setOnClickListener(new View.OnClickListener(){ 

      @Override 
      public void onClick(View view) 
      { 

       setContentView(R.layout.layoutsecond); 
      } 
     }); 



    } 
} 
+0

Sie können 2-Fragmente für Ihre Aufgabe verwenden. Fügen Sie das zweite Fragment hinzu, wenn Sie einen Knopf drücken, und wenn Sie zurück drücken, wird das vorherige Fragment automatisch angezeigt. –

+1

Wie in Ihrer vorherigen Frage erwähnt, ist das Ändern von Layouts nicht wirklich eine gute Idee. Verwenden Sie ein anderes Navigationsmuster - wie 'Fragment's oder mehrere' Aktivitäten' - wo der Status für Sie behandelt wird. Andernfalls müssen Sie nach jeder Änderung des Layouts alle Ihre Views neu initialisieren. –

Antwort

0

Allgemeine Idee, obwohl schrecklicher Rat. Am besten zu verwenden Fragments and take advantage of the back stack

Beginnen Sie mit einem List<Integer>.

Speichern Sie Ihre ersten Blick auf sie

list.add(R.layout.view1); 

Blick in onCreate Ihre Inhalte einstellen und erhöhen die Position des Layouts Sie sind.

int position = 0; // make this a field variable 
setContentView(list.get(position++)); 

Erhöhungsschritte und mehr Layout-IDs hinzufügen, wenn Sie setContentView wieder aufrufen.

list.add(R.layout.view2); 
setContentView(list.get(position++)); 

Implementieren Sie onBackPressed, um zurückzugehen. Seien Sie jedoch vorsichtig bei Ausnahmen außerhalb der Grenzen.

setContentView(list.get(--position)); 

Wenn Sie eine Funktion zu implementieren, vorwärts zu gehen, dann

setContentView(list.get(++position)); 
Verwandte Themen