两种不同的布局不适用于单个活动

时间:2014-08-31 15:30:55

标签: android xml android-layout

我有两个xml布局,其中一个活动我使用setContentView()来调用它们但是当我调用第二个视图时它调用但不工作。 这是代码: 当我点击fok按钮时,第二个布局显示但其上的按钮不起作用。请帮忙

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();
            }
        });
    }
}

2 个答案:

答案 0 :(得分:0)

您应该为第二个XML布局创建第二个活动,而不是尝试更改单个活动的布局。有关详细信息,请阅读Starting Another Activity

答案 1 :(得分:-1)

要添加到sergiome的评论中:您应该初始化okback按钮 AFTER ,您已在此设置了第2个布局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();
        }
    });
}

您的代码流程似乎很混乱,我甚至不知道如何向您解释问题。无论如何,尝试代码,看看它是否适合你。