0

对于任何熟悉 Android 的人来说,这应该是一个非常简单的答案,我刚刚开始搞砸它。我有两个视图:主要视图和其他视图。每个视图都有一个按钮来切换视图。这是我的活动:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.other);

    switcher = (Button) findViewById(R.id.button);
    switcherListener = new View.OnClickListener() {
        public void onClick(View v) {
            setContentView(R.layout.other);
        }
    };
    switcher.setOnClickListener(switcherListener);

    switcher2 = (Button) findViewById(R.id.button2);
    switcherListener2 = new View.OnClickListener() {
        public void onClick(View v) {
            setContentView(R.layout.main);
        }
    };
    switcher2.setOnClickListener(switcherListener2);
}

private Button switcher, switcher2;
private View.OnClickListener switcherListener, switcherListener2;

问题是它甚至没有加载,Android 模拟器说它已经停止工作。我要改变什么来完成这项工作?

4

1 回答 1

0

这是因为switcher2它在一个 View 中 this is not created yet R.layout.main,所以当你调用switcher2 = (Button) findViewById(R.id.button2);它时,它位于一个尚未膨胀的视图中。尝试以下,但它不是很好的编码:

switcher = (Button) findViewById(R.id.button);
    switcherListener = new View.OnClickListener() {
        public void onClick(View v) {
            setContentView(R.layout.other);
            switcher2 = (Button) findViewById(R.id.button2);
            switcher2.setOnClickListener(switcherListener2);
        }
    };
    switcher.setOnClickListener(switcherListener);

    switcherListener2 = new View.OnClickListener() {
        public void onClick(View v) {
            setContentView(R.layout.main);
        }
    };
于 2013-06-05T14:20:12.497 回答