我想更改按钮更改的内容,但它永远不会有效。
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
setContentView(R.layout.blahdyblah);
}
});
这就是代码,但每当我想要更改setContentView()时,它都不会改变,它只是点击而不做任何事情。如果有人能帮助我完成这项任务......
我也尝试将setContentView放在另一个函数中......但仍无效。
答案 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);
}
}