2016-04-24 11 views
-2

私は2つのレイアウトを持っていて、ImageButtonを押すと、2番目のレイアウトに切り替わります。私のネクサス6では、2番目のレイアウトにいるときに最初のレイアウトを実行したままにして、最初のレイアウトを表示するにはどうすればいいですか?前のレイアウトに移動しますか?

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つの断片を使用することができます。ボタンを押すと2番目のフラグメントを追加し、前のフラグメントを押すと自動的に表示されます。 –

+1

あなたの前の質問で述べたように、そのようなレイアウトを変更することは、本当に良い考えではありません。 'Fragment'sや複数の' Activities'など、別のナビゲーションパターンを使用して、状態が処理されます。それ以外の場合は、各レイアウトの変更後にすべての 'View'を再初期化する必要があります。 –

答えて

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)); 
関連する問題