首先,这个问题被多次询问,然而,这些问题都没有得到任何回答。我有一个在主活动类中起作用的示例:
final Button button = (Button) findViewById(R.id.viewcatalog);
button.setFocusable(true);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
setContentView(R.layout.find_item);
}
});
但是我在序列页面中复制此操作的所有其他尝试都导致失败。我知道他们不会以同样的方式工作的原因是我的按钮在其他类中实例化而不是在宿主类中。修复此错误的正确方法是什么?
不适合参考的方法:
public void OnClickSearch(View view) {
final Button button = (Button) findViewById(R.id.button2);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
EditText text = (EditText)findViewById(R.id.editText);
String value = text.getText().toString();
setContentView(R.layout.search_results);
}
});
}
答案 0 :(得分:3)
听起来你错误地理解了UI在Android中的运作方式。 通常不希望您像在OnClickListener中那样动态更改活动视图。
相反,你应该做两件事之一。使用Intent和Activity的startActivity方法切换到新的Activity,或使用Fragments,并使用新的片段替换Activity中的片段。