2013-06-05 53 views
0

对于任何熟悉Android的人来说,这应该是一个非常简单的答案,我只是开始搞乱它。我有两个视图:主要和其他。每个视图都有一个按钮来切换视图。这是我的活动: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模拟器说它已停止工作。我做了什么改变来完成这项工作?

+0

欢迎来到SO。请检查堆栈跟踪logcat并将其添加到您的问题。否则,我们可能无法帮助你。 – WarrenFaith

+4

每个活动不应多次使用setContentView。 –

+1

这也是我的猜测。如果这不是原因,它迟早会发生... – WarrenFaith

回答

0

这是因为switcher2在一个View中还没有创建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); 
     } 
    };