首先,这个问题被问过多次,但是这些问题都没有得到任何回答。我有一个在主要活动类中工作的示例:

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);
        }
    });
}

最佳答案

听起来您误解了UI在Android中的工作方式。
通常不希望您像在OnClickListener中一样动态地更改Activity的视图。

相反,您应该执行以下两项操作之一。使用Intent和Activity的startActivity方法切换到新的Activity,或者使用Fragments,然后用新的Fragment替换Activity中的Fragment。

09-12 05:39
查看更多