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的回答被接受的事实表明了这一点。我只是想弄清楚这是哪种情况。如果已经设置了活动
,为什么要尝试更改其内容视图?你想做什么?我想通过一个按钮把一个内容换成另一个…我可以从代码中看到