Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓布局切换_Java_Android - Fatal编程技术网

Java 安卓布局切换

Java 安卓布局切换,java,android,Java,Android,我有一个简单的问题。我正在尝试在主菜单和关于页面之间切换布局。在主菜单中,当我单击“关于”按钮时没有问题。但是在“关于”布局中,当我单击“返回菜单”按钮时,它根本不起作用。该布局的代码在About.java中,它也扩展了活动。请看一看 在MainActivity.java中: Button button3 = (Button) findViewById(R.id.button3); button3.setOnClickListener(new View.OnClickListen

我有一个简单的问题。我正在尝试在主菜单和关于页面之间切换布局。在主菜单中,当我单击“关于”按钮时没有问题。但是在“关于”布局中,当我单击“返回菜单”按钮时,它根本不起作用。该布局的代码在About.java中,它也扩展了活动。请看一看

在MainActivity.java中:

Button button3 = (Button) findViewById(R.id.button3);
        button3.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 Intent intent = new Intent(v.getContext(), About.class);
                 setContentView(R.layout.about);
            }
        });
工作正常。但是在About.java中:

button1.setOnClickListener(new Button.OnClickListener() {
             public void onClick(View v) {
                 setContentView(R.layout.activity_main);
                 Intent intent = new Intent(this, MainActivity.class);
                 startActivity(intent);


         }

    });

什么也没发生。我尝试了inside onClick()的所有组合,但都不起作用。你的想法是什么?谢谢,祝你有一个愉快的一天。

试着像你的AboutActivity中的主要活动一样做:

button1_.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {
             Intent intent = new Intent(v.getContext(), MainActivity.class);
             setContentView(R.layout.activity_main);  //should be without this line if you set the layout in your onCreate method in the MainActivity (respectively AboutActivity)
             startActivity(intent);
        }
    });

如果它只工作一次,那么它也应该工作两次

在主活动java中,它没有启动任何活动,它基本上只是改变了视图。它似乎起作用了,但实际上不起作用

您应该声明意图,然后调用start activity方法。另一个活动应该有一个方法onCreate,您可以在其中设置内容视图(使用方法setContentView)

应该是这样的:

MainActivity.java

Button button3 = (Button) findViewById(R.id.button3);
    button3.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {
             Intent intent = new Intent(v.getContext(), About.class);
             startActivity(intent);
        }
    });
关于.java

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

});

有关更多信息,请选中此

是否可以删除
setContentView(R.layout.activity\u main)在About.java中,然后尝试?哇,真奇怪的代码。你错过了安卓系统工作原理中真正重要的部分。你想做的只是打开不同的活动(我猜),所以startActivity是正确的部分。其他一切都很糟糕,看,你应该看看碎片和活动。如果您只是交换视图而不是完全切换活动,那么这听起来像是使用片段的好例子。因此,在MainActivity上单击replace
setContentView
调用
startActivity(intent)呼叫。关于活动,只需调用finish();单击按钮。奖励:设置为MainActivity的子活动,并提供向上导航
setContentView(R.layout.activity\u main)将在MainActivity.onCreate()中调用,对吗?为什么我们要明确地称之为?我认为没有必要,当我们创造意图,然后开始活动时,这就足够了,但那家伙设定了它,我认为它不会让事情变得更糟,所以我把它放在那里,但是如果没有它,正确的方法是->文档在开始活动之前设置contentView的目的是什么?setContentView()在开始新活动之前设置布局。文档我知道setContentView做什么,但是在活动开始之前设置contentView的目的是什么?通常我们在活动中调用setContentView