2012-12-06 35 views
0

我有一些麻煩,使一個非常簡單的事情工作。這裏是什麼在持續:onclick沒有顯示的按鈕的聽衆

我有一個顯示佈局1.

佈局1有一個按鈕移動到佈局2.

和佈局2場將回到1

活動該活動正在運行,直到最後一部分。我可以打開它,移動到佈局2,但我不能回去。

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

    position = 1; 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    if(position == 1){ 
     setContentView(R.layout.p1);   
    } 
    if(position == 2){ 
     setContentView(R.layout.p2);   
    } 


    final Button p1p21 = (Button) findViewById(R.id.p1p2); 
    final Button p2p11 = (Button) findViewById(R.id.p2p1); 

    p1p21.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      setContentView(R.layout.p2); 

     } 

    }); 

    p2p11.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      setContentView(R.layout.p1); 

     } 

    }); 

    p2p11.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      setContentView(R.layout.p1); 

     } 

    }); 

} 

@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 
} 

如果我刪除此部分:

p2p11.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      setContentView(R.layout.p1); 

     } 

    }); 

那麼活動工作。所以,我猜測問題是我無法做出一個不可見的按鈕的onclicklistener?我該怎麼辦?

回答

0

你應該只使用setContentView()一次。

+0

這不是真的幫我解決我的問題。 沒有額外的setcontentview,活動仍然崩潰。你能補充爲什麼嗎?還有什麼可以改變佈局? – user1833270

0

試試這個:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.p1); 

    Button button1 = findViewById(R.id.button1); 


    View.OnClickListener listener1 = new View.OnClickListener() { 

     public void onClick(View v) { 
      setContentView(R.layout.p2); 
      Button button2 = findViewById(R.id.button2); 
      button2.setOnClickListener(listener2); 
     } 
    }); 

    View.OnClickListener listener2 = new View.OnClickListener() { 

     public void onClick(View v) { 
      setContentView(R.layout.p1); 
      Button button1 = findViewById(R.id.button2); 
      button1.setOnClickListener(listener1); 
     } 
    }); 

    button1.setOnClickListener(listener1); 
} 

這樣,你首先初始化監聽器,然後在「膨脹」的按鈕,一旦你在一定的佈局是。

我可能會使用錯誤的術語,但我很肯定這是有效的。