2016-04-24 35 views
-2

所以我有两种布局,当按下ImageButton时,我切换到第二个布局。在我的nexus 6上,如何保持第一个布局的运行,以便在第二个布局时按下它将显示第一个布局?去以前的布局?

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

可以使用2个片段您的任务。按下按钮时添加第二个片段,当您按下时,将自动显示前一个片段。 –

+1

正如您在上一个问题中提到的那样,更改这样的布局并不是一个好主意。使用另一种导航模式 - 如“碎片”或多个“活动” - 将为您处理状态。否则,每次布局更改后,都需要注意重新初始化所有“视图”。 –

回答

0

一般的想法,虽然可怕的建议。最好用Fragments and take advantage of the back stack

List<Integer>开头。

存储你的第一个观点就可以了

list.add(R.layout.view1); 

设置你的内容视图中onCreate,并增加你在布局中的位置。

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

当您再次拨打setContentView时,增加并添加更多布局ID。

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

实施onBackPressed回去。尽管如此,请注意出界异常。

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

如果你想实现一个功能,向前走,然后

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