2013-06-05 230 views
0

對於任何熟悉Android的人來說,這應該是一個非常簡單的答案,我只是開始搞亂它。我有兩個視圖:主要和其他。每個視圖都有一個按鈕來切換視圖。這是我的活動:android按鈕導致崩潰

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.other); 

    switcher = (Button) findViewById(R.id.button); 
    switcherListener = new View.OnClickListener() { 
     public void onClick(View v) { 
      setContentView(R.layout.other); 
     } 
    }; 
    switcher.setOnClickListener(switcherListener); 

    switcher2 = (Button) findViewById(R.id.button2); 
    switcherListener2 = new View.OnClickListener() { 
     public void onClick(View v) { 
      setContentView(R.layout.main); 
     } 
    }; 
    switcher2.setOnClickListener(switcherListener2); 
} 

private Button switcher, switcher2; 
private View.OnClickListener switcherListener, switcherListener2; 

問題是它甚至沒有加載,Android模擬器說它已停止工作。我做了什麼改變來完成這項工作?

+0

歡迎來到SO。請檢查堆棧跟蹤logcat並將其添加到您的問題。否則,我們可能無法幫助你。 – WarrenFaith

+4

每個活動不應多次使用setContentView。 –

+1

這也是我的猜測。如果這不是原因,它遲早會發生... – WarrenFaith

回答

0

這是因爲switcher2在一個View中還沒有創建R.layout.main,所以當你調用switcher2 = (Button) findViewById(R.id.button2);時,它的視圖還沒有被誇大。嘗試以下,但它不是好的編碼:

switcher = (Button) findViewById(R.id.button); 
    switcherListener = new View.OnClickListener() { 
     public void onClick(View v) { 
      setContentView(R.layout.other); 
      switcher2 = (Button) findViewById(R.id.button2); 
      switcher2.setOnClickListener(switcherListener2); 
     } 
    }; 
    switcher.setOnClickListener(switcherListener); 

    switcherListener2 = new View.OnClickListener() { 
     public void onClick(View v) { 
      setContentView(R.layout.main); 
     } 
    };