有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从活动中的布局2按钮显示主布局?

我有一个活动有两个布局,一个是主布局,另一个布局名称是layout2。两个布局文件各包含一个按钮。如果我按下主布局上的按钮,它会将我带到布局2,但问题是当我点击布局2上的按钮,将我带回到主布局时,我不工作

main活动

import 安卓.support.v7.app.AppCompatActivity;
import 安卓.os.Bundle;
import 安卓.view.LayoutInflater;
import 安卓.view.View;
import 安卓.widget.Button;

    public class MainActivity extends AppCompatActivity {
    Button button1,button2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        button1=(Button)findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                setContentView(R.layout.layout2);

            }
        });

        LayoutInflater inflater=this.getLayoutInflater();

        View view=inflater.inflate(R.layout.layout2,null);

        button2=(Button) view.findViewById(R.id.button2);

        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                setContentView(R.layout.activity_main);
            }
        });


    }
}

这些是要显示的布局文件

主布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
    xmlns:tools="http://schemas.安卓.com/tools"
    安卓:id="@+id/activity_main"
    安卓:layout_width="match_parent"
    安卓:layout_height="match_parent"
    安卓:paddingBottom="@dimen/activity_vertical_margin"
    安卓:paddingLeft="@dimen/activity_horizontal_margin"
    安卓:paddingRight="@dimen/activity_horizontal_margin"
    安卓:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.lidiawood.myapplication.MainActivity">

    <Button
        安卓:text="Go to layout 2"
        安卓:layout_width="wrap_content"
        安卓:layout_height="wrap_content"
        安卓:layout_below="@+id/textView"
        安卓:layout_alignParentLeft="true"
        安卓:layout_alignParentStart="true"
        安卓:layout_marginTop="52dp"
        安卓:id="@+id/button1" />
</RelativeLayout>

布局2

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
    安卓:layout_width="match_parent" 
    安卓:layout_height="match_parent">

    <Button
        安卓:text="go to main layout"
        安卓:layout_width="wrap_content"
        安卓:layout_height="wrap_content"
        安卓:layout_alignParentTop="true"
        安卓:layout_alignParentLeft="true"
        安卓:layout_alignParentStart="true"
        安卓:layout_marginLeft="14dp"
        安卓:layout_marginStart="14dp"
        安卓:layout_marginTop="40dp"
        安卓:id="@+id/button2" />
</RelativeLayout>

有谁能帮我从布局2的组件中得到主要布局的显示吗


共 (1) 个答案

  1. # 1 楼答案

    onClick事件侦听器附加到充气视图中的按钮,而不是活动视图中的按钮。使用相同的布局并不重要,它是一个不同的按钮

    这种情况永远不应该发生,因为在更改布局时,通常需要不同的片段或活动。以这种方式更改内容视图不是一个好主意。如果仍然需要使用代码,则需要以下内容:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        onContentViewOneInflated();
    }
    
    private void onContentViewOneInflated() {
        Button button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                setContentView(R.layout.layout2);
                onContentViewTwoInflated();
            }
        }
    }
    
    private void onContentViewTwoInflated() {
        Button button2 = (Button) findViewById(R.id.button2);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                setContentView(R.layout.activity_main);
                onContentViewOneInflated();
            }
        }
    }
    

    我还没试过密码。如果你有任何问题,请发表评论