2014-08-31 102 views
1

我有兩個xml佈局與一個活動我用setContentView()調用它們,但是當我調用它調用的第二個視圖,但不工作。 這裏是代碼: 當我點擊第二個佈局顯示的按鈕,但其上的按鈕不起作用。請幫助兩個不同的佈局不工作在單個活動

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //setContentView(R.layout.activity_reset_pas); 
    setContentView(R.layout.forpasrest); 

    fok.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       fok.setBackgroundColor(Color.rgb(220, 215, 255)); 
       setContentView(R.layout.activity_reset_pas); 

       flag=false; 
      } 

    }); 

    fback.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       fback.setBackgroundColor(Color.rgb(220, 215, 255)); 

       Intent intent = new Intent(ResetPasActivity.this,SignInActivity.class); 
       startActivity(intent); 
       finish(); 

      } 
    }); 

    if(flag==false){ 

     ok.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 

        Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show(); 

      } 
     }); 

     back.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       back.setBackgroundColor(Color.rgb(220, 215, 255)); 
       Intent intent = new Intent(ResetPasActivity.this,SignInActivity.class); 
       startActivity(intent); 
       finish(); 
      } 
     }); 
    } 
} 
+0

這可能有助於[http://stackoverflow.com/questions/7017428/switching-between-2-layouts-in-android-activity](http://stackoverflow.com/questions/7017428/switching-between- 2-layouts-in-android-activity) – sergiomse 2014-08-31 15:36:56

+0

佈局顯示,但是當我嘗試在第二個佈局上工作時,有點擊按鈕的問題,因爲代碼顯示 – Awais 2014-08-31 15:41:32

+0

當我調用setContentView(second_layout)時,它顯示正常,但它不工作 – Awais 2014-08-31 15:42:20

回答

0

您應該爲第二個XML佈局創建第二個活動,而不是嘗試更改單個活動的佈局。有關詳細信息,請參閱Starting Another Activity

-1

爲了增加sergiome的評論:你應該初始化okback按鈕你在這裏setContentView(R.layout.activity_reset_pas)設置你的第二個佈局。這是修改後的代碼。

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //setContentView(R.layout.activity_reset_pas); 
    setContentView(R.layout.forpasrest); 

    fok.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       buildSecondLayout(); 
      } 

    }); 

    fback.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       fback.setBackgroundColor(Color.rgb(220, 215, 255)); 

       Intent intent = new Intent(ResetPasActivity.this,SignInActivity.class); 
       startActivity(intent); 
       finish(); 

      } 
    }); 
} 

private void buildSecondLayout() { 
    fok.setBackgroundColor(Color.rgb(220, 215, 255)); 
    setContentView(R.layout.activity_reset_pas); 

    final Button ok = (Button)findViewById(R.id.yourButtonIdForOk); 
    final Button back = (Button)findViewById(R.id.yourButtonIdForBack); 

    ok.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      Toast.makeText(getApplicationContext(), result, 
        Toast.LENGTH_SHORT).show(); 

     } 
    }); 

    back.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      back.setBackgroundColor(Color.rgb(220, 215, 255)); 
      Intent intent = new Intent(ResetPasActivity.this, 
        SignInActivity.class); 
      startActivity(intent); 
      finish(); 
     } 
    }); 
} 

你的代碼的流程看起來相當混亂,我甚至不知道如何向你解釋問題。無論如何,請嘗試一下代碼,看看它是否適合你。

+0

首選的解決方案是使用第二個活動。 – 2014-09-01 02:57:12

+0

爲什麼downvote?我認爲兩次調用setContentView沒有任何問題。作爲參考:http://stackoverflow.com/questions/5808026/side-effects-of-calling-activity-setcontentview-twice-in-a-row 只是因爲你認爲你的解決方案更好,你的聲譽是更高不會給你降低我的權利。我的答案正在起作用,他想看到的唯一一件解決方案就是他的代碼無法正常工作。 – chjarder 2014-09-01 03:26:50

+0

「爲什麼downvote?」因爲我認爲這個答案「沒有用」,因爲它促成了糟糕的編程實踐。創建兩個單獨的活動更清潔,更容易維護。 – 2014-09-01 03:35:09