Java 单击按钮时,内容不会显示';不要改变安卓

Java 单击按钮时,内容不会显示';不要改变安卓,java,android,Java,Android,我想在按钮更改上更改内容,但它从来都不起作用 button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { setContentView(R.layout.blahdyblah); } }); 这就是代码,但每当我想更改setContentVi

我想在按钮更改上更改内容,但它从来都不起作用

        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                setContentView(R.layout.blahdyblah);
            }
        });
这就是代码,但每当我想更改setContentView()时,它都不会更改,只会单击,什么也不做。如果有人能帮我完成这项任务


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

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


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

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

如果这不起作用,请您编辑您的答案以显示您的全部代码,我建议您这样做; 1) 如果当前视图位于同一上下文/类中,请确保该按钮位于该上下文/类中 2) 确保“blahdyblah”是正确设置的XML文件

您可能还想启动一个新的活动,在其中可以设置ContentView——也许更改当前活动中的内容时出现问题。

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

您可能还想启动一个新的活动,您可以在其中设置ContentView--更改当前活动中的内容可能有问题。

请按以下方式执行:

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

...

private void setBlahdyBlah() {
    setContentView(R.layout.blahdyblah);
}
这将保证从正确的上下文执行对setContentView()的调用

我不太清楚为什么它没有按照您编写的方式工作,但我认为您的代码取决于您的OnClickListener是否被创建为活动的适当内部类,以及全局“R”是否可以从该范围正确访问。我不确定它在哪里失败了,但我的方法消除了这个问题中的未知因素。另外,我就是这样做的,这对我很有效

嗯,经过进一步考虑,我打赌这也会起作用:

    final Activity foo = this;
    button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            foo.setContentView(R.layout.blahdyblah);
        }
    });
我认为这一切都与你的听众不是你活动的一个适当的内部阶层有关。

这样做:

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

...

private void setBlahdyBlah() {
    setContentView(R.layout.blahdyblah);
}
这将保证从正确的上下文执行对setContentView()的调用

我不太清楚为什么它没有按照您编写的方式工作,但我认为您的代码取决于您的OnClickListener是否被创建为活动的适当内部类,以及全局“R”是否可以从该范围正确访问。我不确定它在哪里失败了,但我的方法消除了这个问题中的未知因素。另外,我就是这样做的,这对我很有效

嗯,经过进一步考虑,我打赌这也会起作用:

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

我认为这一切都与你的OnClickListener不是你活动的一个适当的内部类有关。

我猜你希望你的屏幕在点击按钮时切换到另一个布局。尝试以下方法。首先,创建一个名为“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);
    }
}

我猜你希望你的屏幕在点击按钮时切换到另一个布局。尝试以下方法。首先,创建一个名为“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);
    }
}

如果已经设置了
活动
,为什么要尝试更改其内容视图?你想完成什么?我想通过一个按钮将一个内容更改为另一个内容…我可以从代码中看到你试图设置内容视图。我的问题是你为什么这样做?这种方法不太可能成功,所以我正在试图弄清楚您为什么要这样做,所以我知道是建议单独的
活动
还是
片段
,还是显示/隐藏现有的
视图
。您试图通过更改内容视图来产生什么行为?好吧,更改活动的整个内容视图是合法和合理的。例如,我有一个计算器应用程序,可以让你在完整的科学和基础之间切换。由于这两种方式的功能都是相同的(只是在基本视图中显示的按钮较少),因此启动新活动没有意义,所以我只需更改内容视图。从1.0开始,它在每一个版本上都能完美地工作。@EdwardFalk是的,它可以成功地工作。对于Android新手来说,这也是一种相当常见的方法,他们还不知道生命周期,实际上正在尝试改变活动。Corecase的回答被接受的事实表明了这一点。我只是想弄清楚这是哪种情况。如果已经设置了
活动
,为什么要尝试更改其内容视图?你想做什么?我想通过一个按钮把一个内容换成另一个…我可以从代码中看到