2014-08-31 95 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