0

我想更改按钮更改的内容,但它永远不会起作用。

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

这就是代码,但是每当我想更改 setContentView() 时,它都不会更改,它只是单击而不执行任何操作。如果有人可以帮助我完成这项任务......

我也尝试将 setContentView 放在另一个函数中......这仍然不起作用。

4

4 回答 4

1

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

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

于 2012-08-08T19:51:25.760 回答
1

我会建议; 1) 如果您的当前视图在哪里,请确保按钮位于相同的上下文/类中 2) 确保您的“blahdyblah”是正确设置的 XML 文件

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

于 2012-08-08T19:55:36.813 回答
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

我猜你希望你的屏幕在点击按钮时切换到另一个布局。试试下面的。首先,创建一个名为“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 I'm pretty sure that should do you're looking for。

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 回答