2015-06-21 29 views
0

這是我下面的代碼,我想activity_main和activity_second多次之間切換,但它給我錯誤我怎麼使用的setContentView(r.layout.activity_main)多次

public class MainActivity extends ActionBarActivity { 

    Button buttonMain, buttonSecond; 

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

     setContentView(R.layout.activity_main); 

     buttonMain = (Button) findViewById(R.id.buttonMain); 
     buttonSecond = (Button) findViewById(R.id.buttonSecond); 

     buttonMain.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       setContentView(R.layout.activity_second); // 
      } 
     }); 

     buttonSecond.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       setContentView(R.layout.activity_main); 

      } 
     }); 

    } 

} 
+0

你不能那樣做。只需使用意圖在活動之間進行切換。 –

+0

「給我錯誤」不是一個很好的錯誤描述。根據假設你的問題發佈我的答案。請在SO上描述您的問題時具體說明。 – laalto

回答

1

當您打電話setContentView(),活動中顯示的視圖層次被替換爲新的視圖層次。因此,您在前一個視圖中的按鈕以及它們的點擊監聽器也一併消失。因此,在調用setContentView()之後,您需要刷新任何視圖引用findViewById()並重置任何點擊偵聽器。

對於運行時的更多Android-y視圖層次結構替換,請考慮使用片段,其中一個片段用於activity_main佈局,另一個片段用於activity_second。