0

ボタンの変更でコンテンツを変更したいのですが、うまくいきません。

        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                setContentView(R.layout.blahdyblah);
            }
        });

これがコードですが、setContentView() を変更したいときはいつでも変更されず、クリックするだけで何もしません。誰かがこの仕事で私を助けることができれば...

setContentView を別の関数に入れてみました...それでもうまくいきません。

4

4 に答える 4

1

ActivityNameがアクティビティであるActivityName.this.setContentView(R.layout.blahdyblah)を試すことができますか?現在処理しているコンテキストでsetContentViewが呼び出されている可能性があります。ボタン内のonclickはボタンです。

それでも問題が解決しない場合は、回答を編集してコード全体を表示してください。

于 2012-08-08T19:51:25.760 に答える
1

このようにしてください:

{
    ...
    button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            setBlahdyBlah();
        }
    });
}

...

private void setBlahdyBlah() {
    setContentView(R.layout.blahdyblah);
}

これにより、 setContentView() への呼び出しが正しいコンテキストから実行されることが保証されます。

あなたが書いたように機能しなかった理由は正確にはわかりませんが、あなたのコードは OnClickListener が Activity の適切な内部クラスとして作成され、グローバル 'R' から正しくアクセスできることに依存していると思いますその範囲。どこで失敗したかはわかりませんが、私の方法では、この問題から不明な点が排除されます。さらに、それが私がやった方法であり、私にとってはうまくいきました。

うーん、さらに検討すると、これもうまくいくと思います:

    final Activity foo = this;
    button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            foo.setContentView(R.layout.blahdyblah);
        }
    });

OnClickListener がアクティビティの適切な内部クラスではないことにすべて関連していると思います。

于 2012-08-08T22:41:16.550 に答える
1

ボタンがクリックされたときに画面を別のレイアウトに切り替えたいと思います。以下を試してください。まず、xml ファイルだけでなく、「blahdyblah」というアクティビティを作成します (したがって、onClickListener を含むボタンを持つメイン アクティビティと、「blahdyblah」という別のアクティビティの 2 つのアクティビティが必要です)。それが終わったら、これを試してください:

button.setOnClickListener(new View.OnClickListener() 
{
        @Override
        public void onClick(View v) 
        {
            Intent intent = new Intent(MainActivity.this, blahdyblah.class);
            startActivity(intent);
        }
});

コードで、「MainActivity」を、この onClickListener を記述しているクラスの名前に置き換えます。

blahdyblah.java ファイルのコンテンツ ビューを次のように設定しR.layout.blahdyblah ます。

ブラディブラ.java

public class blahdyblah extends Activity
{
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.blahdyblah);
    }
}
于 2012-08-09T01:04:27.723 に答える
1

私はお勧めします。1)現在のビューがどこにある場合、ボタンが同じコンテキスト/クラスにあることを確認してください2)「blahdyblah」が適切に設定されたXMLファイルであることを確認してください

ContentView を設定できる新しいアクティビティを開始することもできます。現在のアクティビティのコンテンツを変更する際に問題が発生する可能性があります。

于 2012-08-08T19:55:36.813 に答える