在位于2个不同布局上的按钮上设置2 onClickListener()时导致异常

时间:2016-12-25 17:00:56

标签: java android exception onclick onclicklistener

我遇到了问题,我似乎无法在2个不同的布局上为2个单独的按钮设置2 onClickListener,在运行程序时会导致异常。

btnClickToSecondPage按钮位于activity_main.xml布局中,btnObjClickToGoToFirstPage按钮位于second_activity.xml布局中。

我程序的java代码位于此处

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    requestWindowFeature(getWindow().FEATURE_NO_TITLE);

    requestWindowFeature(Window.FEATURE_NO_TITLE);

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.activity_main);

    Button btnObjClickToGoToSecondPage = (Button) findViewById(R.id.btnClickToSecondPage);
    Button btnObjClickToGoToFirstPage = (Button) findViewById(R.id.btnChangetoFirstPage);


    btnObjClickToGoToFirstPage.setOnClickListener(
         new Button.OnClickListener(){
             @Override
             public void onClick (View v)
             {
                 setContentView(R.layout.second_activity);
             }
         }
    );
    btnObjClickToGoToSecondPage.setOnClickListener(
            new Button.OnClickListener(){
                @Override
                public void onClick (View v)
                {
                    setContentView(R.layout.activity_main);
                }
          }
    );
} }

请帮我纠正这个问题谢谢。

3 个答案:

答案 0 :(得分:0)

请实现View.Onclick侦听器而不是Button.onclick侦听器

App Share/Send Pro

答案 1 :(得分:0)

这不是在Android中切换页面的正确方法。使用两个活动来切换具有意图的页面。

Intent newPage = new Intent (this, YourActivityNameForNewPage.class);
startActivity(newPage);

将上面的代码放在按钮的onClick()

答案 2 :(得分:0)

如果要显示新页面,您可以开始新活动或开始新片段。

更改contentView 是接近此方法的正确方法,不应该这样做。

您可以参考有关活动here的文档。

假设您有另一个名为SecondActivity的Activity,那么您将如何启动它:

btnObjClickToGoToSecondPage.setOnClickListener(
        new Button.OnClickListener(){
            @Override
            public void onClick (View v)
            {
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                startActivity(intent);
            }
      }
);

然后在新活动的XML中定义布局,即 second_activity.xml

如果使用fragment它们都具有相似的布局也是一个不错的选择。

基本上,你开始一个新的活动或片段来显示任何新内容或动态更改数据,如按钮的onClick()所示。

这个问题可能会进一步明确你的疑虑: What is setContentView(R.layout.main)?