2016-03-20 9 views
0

Ich habe zwei Layout (Layout1, Layout2) Während diese in einer Aktivität definiertAufenthalt auf Aktivität, wenn drücken Zurück-Taste

I verwendet setContentView (R.layout.layout1) und setContentView (R.layout.layout2) in einem Aktivität.

Ich möchte bei der Wiedergabe angeklickt, auf die Aktivität bleiben und zurück von Layout2 zum Layout1 gerade.

public class Anatomy1 extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.layout1); //***************** 

     LinearLayout num1 = (LinearLayout) findViewById(R.id.num1); 
     num1.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       setContentView(R.layout.layout2);  //***************** 
       final FrameLayout layout = (FrameLayout) findViewById(R.id.my_frame); 
       final TouchImage iv = new TouchImage(getApplicationContext()); 
       iv.setImageResource(R.drawable.theImage); 
       layout.addView(iv); 
      } 
     }); 
    } 
} 

UPDATE

Sie sind Codes ist sehr gut, aber ich bin ein Problem.

In der ersten Stufe wird der Betrag in Höhe der „null“, gibt es kein Problem, aber das nächste Mal, dass die Bühne nicht „null“ Ich habe einen Fehler, vielleicht, weil ich FrameLayout Agane erstellen. Was kann ich tun, um dieses Problem zu beheben?

![enter image description here

das ist mein Fehler:

![enter image description here

UPDATE

Schließlich richtig, code der Fehler hier war:

![![enter image description here

Antwort

1

Haben Sie versucht, onBackPressed überschrieben und innerhalb dieser auch ohne super.onBackPressed() wie hier

@Override 
public void onBackPressed() { 
//No codes at all 
} 

UPDATE keine Codes setzen:

Als Ihre Anforderung wie dieses Ich habe versucht, zu tun und einfach Ihre Activity sieht , Es setzt layout2 in Standard

boolean isLayout2 = false; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     if(getIntent().getExtras() != null) { 
      if (getIntent().getStringExtra("layout").equalsIgnoreCase("layout2")) { 

       setContentView(R.layout.activity_main); 
       isLayout2 = false; 

      } 
     } 
     else{ 
      isLayout2 = true; 
      setContentView(R.layout.activity_main2); 

     } 



@Override 
    public void onBackPressed() { 

     if(isLayout2){ 

      backToLayout1(); 
     } 
     else{ 
      super.onBackPressed(); 
     } 

    } 


    private void backToLayout1() { 
    Intent intent = getIntent(); 
    intent.putExtra("layout","layout2"); 
    finish(); 
    startActivity(intent); 
    } 

Ich hoffe, Sie werden verstehen und bearbeiten nach Ihren Bedürfnissen.

+0

Ich möchte das Bild nach Layout2 einzigartig zeigen (im Layout2), wenn ich zurück klicken, gehen Sie zurück zu den layout1.Ihr Code tut das? – gadolf

+0

Sie meinen, nur den Inhalt zu ändern, aber nicht die Aktivität>? Warum nimmst du nicht KeyCode –

+0

Ich habe eine listView in layout1 und nur ein FrameLayout in layout2, ich möchte, wenn zurück drücken, von layout2 zu layout1 gehen und wenn drücken Sie erneut eine andere Aktivität zurück. – gadolf