单击按钮时,内容不会更改。 - Android

时间:2012-08-08 19:47:14

标签: java android

我想更改按钮更改的内容,但它永远不会有效。

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

这就是代码,但每当我想要更改setContentView()时,它都不会改变,它只是点击而不做任何事情。如果有人能帮助我完成这项任务......

我也尝试将setContentView放在另一个函数中......但仍无效。

4 个答案:

答案 0 :(得分:1)

您可以尝试ActivityName.this.setContentView(R.layout.blahdyblah),其中ActivityName是您的活动吗?可能是你正在处理的上下文调用setContentView ..你的按钮onclick里面是按钮

如果这不起作用,请编辑您的答案以显示整个代码

答案 1 :(得分:1)

我会建议; 1)确保按钮在当前视图所在的上下文/类中 2)确保你的'blahdyblah'是一个正确设置的XML文件

您可能还想开始一个新活动,您可以在其中设置内容查看 - 可能在更改当前活动中的内容时出现问题。

答案 2 :(得分: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不是你活动的正确内部类有关。

答案 3 :(得分:1)

我猜你想让你的屏幕在点击按钮时切换到另一个布局。请尝试以下方法。首先,制作一个名为“blahdyblah”的活动,而不仅仅是一个xml文件(所以你应该有两个活动,你的主要活动有onClickListener的按钮,还有一个叫做“blahdyblah”的独立活动)。完成后,试试这个:

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 我很确定应该做你正在寻找的东西。

blahdyblah.java

public class blahdyblah extends Activity
{
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.blahdyblah);
    }
}