0

かなり単純なことを機能させるのに問題があります。ここに何が起こっているかです:

レイアウト 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 を作成できないことだと思いますか? 私は何をしますか?

4

2 に答える 2

0

setContentView() は 1 回だけ使用してください。

于 2012-12-06T20:55:11.650 に答える
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);
}

このようにして、最初にリスナーを初期化し、特定のレイアウトになったらボタンを「膨張」させます。

間違った用語を使用している可能性がありますが、これでうまくいくと確信しています。

于 2012-12-16T23:30:00.537 に答える