Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.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_Android Layout - Fatal编程技术网

Java 当我有多个单独的布局(屏幕)时,如何更改应用程序上的布局视图?

Java 当我有多个单独的布局(屏幕)时,如何更改应用程序上的布局视图?,java,android,android-layout,Java,Android,Android Layout,xml主活动屏幕1 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools=&quo

xml主活动屏幕1

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context=".MainActivity"
   android:background="#00008b"
   android:id="@+id/page"


   >


   <TextView
       android:id="@+id/game"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="The Random Game"
       android:textStyle="bold|italic"
       android:layout_centerInParent="true"
       android:layout_alignParentTop="true"
       app:layout_constraintEnd_toEndOf="parent"
       app:layout_constraintStart_toStartOf="parent"
       android:textColor="#006400"
       android:outlineSpotShadowColor="#2196F3"
       app:layout_constraintTop_toTopOf="parent" />
   <Button
       android:id="@+id/buttonstart"
       android:text="Start"
       android:textStyle="bold|italic"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@id/game"
       android:layout_centerInParent="true"
       android:textColor="#006400"
       android:background="#8b0000"

       />
   <TextView
       android:id="@+id/TVshowmessage"
       android:text="the number is"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@id/buttonstart"
       android:layout_centerInParent="true"
       android:textColor="#006400"


       />
   <Button
       android:id="@+id/buttonplus"
       android:text="+"
       android:textStyle="bold|italic"
       android:textSize="@android:dimen/app_icon_size"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@id/TVshowmessage"
       android:layout_centerInParent="true"
       android:textColor="#006400"
       android:background="#8b0000"
       />
   <TextView
       android:id="@+id/TVcurrentnum"
       android:text="0"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@id/buttonplus"
       android:layout_centerInParent="true"
       android:textColor="#006400"
       android:background="#8b0000"

       />
   <Button
       android:id="@+id/buttonminus"
       android:text="-"
       android:textSize="@android:dimen/app_icon_size"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@id/TVcurrentnum"
       android:layout_centerInParent="true"
       android:textColor="#006400"
       android:background="#8b0000"

       />

   <TextView
       android:id="@+id/tvcounter"
       android:text="counter"
       android:layout_width="wrap_content"
       android:layout_height="66dp"
       android:layout_centerInParent="true"
       android:layout_marginBottom="300dp"
       android:background="#8b0000"
       android:textColor="#006400"
       android:textStyle="bold|italic"
       android:textAlignment="center"
       android:layout_below="@id/buttonrestart"
       />

   <Button
       android:id="@+id/buttoncheck"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerInParent="true"
       android:layout_centerHorizontal="true"
       android:textColor="#006400"
       android:background="#8b0000"
       android:textStyle="bold|italic"
       android:outlineSpotShadowColor="#008B02"
       android:text="Check"
       android:layout_below="@id/buttonminus"
       />
   <Button
       android:id="@+id/buttonrestart"
       android:text="restart"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerInParent="true"
       android:textColor="#006400"
       android:background="#8b0000"
       android:textStyle="bold|italic"
       android:layout_below="@id/buttoncheck"

       />

</RelativeLayout> 
model.java

package com.example.findrandomnumber;

import java.util.Random;

public class Modelguessnum {
    private int currentnum;
    private int  randomnum;
    private  int counter=0;

    public Modelguessnum() {

    }
    public void mStartGame(){
//        this.randomnum= new Random().nextInt( 100);
//        this.currentnum= new Random().nextInt(100);
        this.randomnum=5;
        this.currentnum=5;
    }
    public int getCurrentnum(){
        int mnum= currentnum;
        return mnum;
    }
    public int getRandomnum(){
        return randomnum;
    }


    public void mplus(){
        this.currentnum++;
    }
    public void mminus()
    {
        this.currentnum--;
    }

    public String mcheck() {
        //-1 is smaller
        //0 equal
        //1 is bigger
        if (this.currentnum > this.randomnum) {
            return "bigger";
        }
        else
          if (this.currentnum==this.randomnum){
               return "equal";
        }

        else
            if(this.currentnum < this.randomnum){
                return "smaller";
            }
        else
           return "neither";
}
}


得到的例外情况是:无法将空子视图添加到视图组

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    >

  <RelativeLayout
      android:id="@+id/page"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      >

    <TextView
        android:id="@+id/game"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerInParent="true"
        android:outlineSpotShadowColor="#2196F3"
        android:text="The Random Game"
        android:textColor="#006400"
        android:textStyle="bold|italic"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        />
    <Button
        android:id="@+id/buttonstart"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/game"
        android:layout_centerInParent="true"
        android:background="#8b0000"
        android:text="Start"
        android:textColor="#006400"
        android:textStyle="bold|italic"

        />
    <TextView
        android:id="@+id/TVshowmessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/buttonstart"
        android:layout_centerInParent="true"
        android:text="the number is"
        android:textColor="#006400"


        />
    <Button
        android:id="@+id/buttonplus"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/TVshowmessage"
        android:layout_centerInParent="true"
        android:background="#8b0000"
        android:text="+"
        android:textColor="#006400"
        android:textSize="@android:dimen/app_icon_size"
        android:textStyle="bold|italic"
        />
    <TextView
        android:id="@+id/TVcurrentnum"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/buttonplus"
        android:layout_centerInParent="true"
        android:background="#8b0000"
        android:text="0"
        android:textColor="#006400"

        />
    <Button
        android:id="@+id/buttonminus"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/TVcurrentnum"
        android:layout_centerInParent="true"
        android:background="#8b0000"
        android:text="-"
        android:textColor="#006400"
        android:textSize="@android:dimen/app_icon_size"

        />

    <TextView
        android:id="@+id/tvcounter"
        android:layout_width="wrap_content"
        android:layout_height="66dp"
        android:layout_below="@id/buttonrestart"
        android:layout_centerInParent="true"
        android:layout_marginBottom="300dp"
        android:background="#8b0000"
        android:text="counter"
        android:textAlignment="center"
        android:textColor="#006400"
        android:textStyle="bold|italic"
        />

    <Button
        android:id="@+id/buttoncheck"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/buttonminus"
        android:layout_centerHorizontal="true"
        android:layout_centerInParent="true"
        android:background="#8b0000"
        android:outlineSpotShadowColor="#008B02"
        android:text="Check"
        android:textColor="#006400"
        android:textStyle="bold|italic"
        />
    <Button
        android:id="@+id/buttonrestart"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/buttoncheck"
        android:layout_centerInParent="true"
        android:background="#8b0000"
        android:text="restart"
        android:textColor="#006400"
        android:textStyle="bold|italic"

        />

  </RelativeLayout>

  <!-- code from foundnm.xml-->

  <RelativeLayout
      android:id="@+id/grats"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:visibility="gone"
      >

    <TextView
        android:id="@+id/tvfound"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/buttonrestart1"
        android:layout_centerInParent="true"
        android:background="#8b0000"
        android:text="congrats"
        android:textColor="#006400"
        android:textStyle="bold|italic"
        />


    <Button
        android:id="@+id/buttonrestart1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="#8b0000"
        android:text="restart"
        android:textColor="#006400"
        android:textStyle="bold|italic"

        />

  </RelativeLayout>

</RelativeLayout> 
视图组是可以包含其他视图的视图。ViewGroup是android中布局的基类,如LinearLayout、RelativeLayout、FrameLayout等。换句话说,ViewGroup通常用于定义在android屏幕上设置/排列/列出视图(小部件)的布局

您有两个视图组:一个
activity\u main.xml
foundnum.xml

在代码(MainActivity)中,通过这行代码
setContentView(R.layout.activity\u main)将activity\u main.xml设置为视图组在oncreate方法中

错误的原因是什么?? 错误是由于在tvfoundnum和buttonrestart1上执行操作(设置文本或设置onclick操作)引起的:

  • TextView tvfoundnum=findViewById(R.id.tvfound)
  • buttonrestart1=(按钮)findViewById(R.id.buttonrestart1)
设置为这些视图的任何操作都将导致错误,因为这些视图不属于“设置视图”组。在其他方面,它们不包含在activity_main.xml中,也不为人所知

解决方案选项: 有两种方法可以实现您的目标:

  • 通过仅隐藏和显示要显示的视图:这意味着您必须将foundnum.xml的代码组合到activity_main.xml。这样您就有了一个布局
  • 通过使用片段。使用片段,可以让一个片段管理多个视图组(布局)
  • 由于您正在使用活动,我将在下面演示解决方案选项(1)

    解决方案选项一。 这是新的布局(它包含来自activity_main.xml和foundnum.xml的代码):activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity"
        >
    
      <RelativeLayout
          android:id="@+id/page"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          >
    
        <TextView
            android:id="@+id/game"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerInParent="true"
            android:outlineSpotShadowColor="#2196F3"
            android:text="The Random Game"
            android:textColor="#006400"
            android:textStyle="bold|italic"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            />
        <Button
            android:id="@+id/buttonstart"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/game"
            android:layout_centerInParent="true"
            android:background="#8b0000"
            android:text="Start"
            android:textColor="#006400"
            android:textStyle="bold|italic"
    
            />
        <TextView
            android:id="@+id/TVshowmessage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/buttonstart"
            android:layout_centerInParent="true"
            android:text="the number is"
            android:textColor="#006400"
    
    
            />
        <Button
            android:id="@+id/buttonplus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/TVshowmessage"
            android:layout_centerInParent="true"
            android:background="#8b0000"
            android:text="+"
            android:textColor="#006400"
            android:textSize="@android:dimen/app_icon_size"
            android:textStyle="bold|italic"
            />
        <TextView
            android:id="@+id/TVcurrentnum"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/buttonplus"
            android:layout_centerInParent="true"
            android:background="#8b0000"
            android:text="0"
            android:textColor="#006400"
    
            />
        <Button
            android:id="@+id/buttonminus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/TVcurrentnum"
            android:layout_centerInParent="true"
            android:background="#8b0000"
            android:text="-"
            android:textColor="#006400"
            android:textSize="@android:dimen/app_icon_size"
    
            />
    
        <TextView
            android:id="@+id/tvcounter"
            android:layout_width="wrap_content"
            android:layout_height="66dp"
            android:layout_below="@id/buttonrestart"
            android:layout_centerInParent="true"
            android:layout_marginBottom="300dp"
            android:background="#8b0000"
            android:text="counter"
            android:textAlignment="center"
            android:textColor="#006400"
            android:textStyle="bold|italic"
            />
    
        <Button
            android:id="@+id/buttoncheck"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/buttonminus"
            android:layout_centerHorizontal="true"
            android:layout_centerInParent="true"
            android:background="#8b0000"
            android:outlineSpotShadowColor="#008B02"
            android:text="Check"
            android:textColor="#006400"
            android:textStyle="bold|italic"
            />
        <Button
            android:id="@+id/buttonrestart"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/buttoncheck"
            android:layout_centerInParent="true"
            android:background="#8b0000"
            android:text="restart"
            android:textColor="#006400"
            android:textStyle="bold|italic"
    
            />
    
      </RelativeLayout>
    
      <!-- code from foundnm.xml-->
    
      <RelativeLayout
          android:id="@+id/grats"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:visibility="gone"
          >
    
        <TextView
            android:id="@+id/tvfound"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/buttonrestart1"
            android:layout_centerInParent="true"
            android:background="#8b0000"
            android:text="congrats"
            android:textColor="#006400"
            android:textStyle="bold|italic"
            />
    
    
        <Button
            android:id="@+id/buttonrestart1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:background="#8b0000"
            android:text="restart"
            android:textColor="#006400"
            android:textStyle="bold|italic"
    
            />
    
      </RelativeLayout>
    
    </RelativeLayout> 
    

    我希望这对你有帮助。如果您有任何问题,请发表意见,我将帮助您。

    您好,非常感谢您的帮助。我检查了你的解决方案,它成功了。谢谢你说你创建的返回函数,它看起来怎么样?你是什么意思?
    package com.example.findrandomnumber;
    
    import java.util.Random;
    
    public class Modelguessnum {
        private int currentnum;
        private int  randomnum;
        private  int counter=0;
    
        public Modelguessnum() {
    
        }
        public void mStartGame(){
    //        this.randomnum= new Random().nextInt( 100);
    //        this.currentnum= new Random().nextInt(100);
            this.randomnum=5;
            this.currentnum=5;
        }
        public int getCurrentnum(){
            int mnum= currentnum;
            return mnum;
        }
        public int getRandomnum(){
            return randomnum;
        }
    
    
        public void mplus(){
            this.currentnum++;
        }
        public void mminus()
        {
            this.currentnum--;
        }
    
        public String mcheck() {
            //-1 is smaller
            //0 equal
            //1 is bigger
            if (this.currentnum > this.randomnum) {
                return "bigger";
            }
            else
              if (this.currentnum==this.randomnum){
                   return "equal";
            }
    
            else
                if(this.currentnum < this.randomnum){
                    return "smaller";
                }
            else
               return "neither";
    }
    }
    
    
    E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.example.findrandomnumber, PID: 480
        java.lang.IllegalArgumentException: Cannot add a null child view to a ViewGroup
            at android.view.ViewGroup.addView(ViewGroup.java:3718)
            at android.view.ViewGroup.addView(ViewGroup.java:3700)
            at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:687)
            at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:175)
            at com.example.findrandomnumber.MainActivity.changepage(MainActivity.java:95)
            at com.example.findrandomnumber.MainActivity.onClick(MainActivity.java:129)
            at android.view.View.performClick(View.java:4780)
            at android.view.View$PerformClick.run(View.java:19866)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)>
    
    
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity"
        >
    
      <RelativeLayout
          android:id="@+id/page"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          >
    
        <TextView
            android:id="@+id/game"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerInParent="true"
            android:outlineSpotShadowColor="#2196F3"
            android:text="The Random Game"
            android:textColor="#006400"
            android:textStyle="bold|italic"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            />
        <Button
            android:id="@+id/buttonstart"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/game"
            android:layout_centerInParent="true"
            android:background="#8b0000"
            android:text="Start"
            android:textColor="#006400"
            android:textStyle="bold|italic"
    
            />
        <TextView
            android:id="@+id/TVshowmessage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/buttonstart"
            android:layout_centerInParent="true"
            android:text="the number is"
            android:textColor="#006400"
    
    
            />
        <Button
            android:id="@+id/buttonplus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/TVshowmessage"
            android:layout_centerInParent="true"
            android:background="#8b0000"
            android:text="+"
            android:textColor="#006400"
            android:textSize="@android:dimen/app_icon_size"
            android:textStyle="bold|italic"
            />
        <TextView
            android:id="@+id/TVcurrentnum"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/buttonplus"
            android:layout_centerInParent="true"
            android:background="#8b0000"
            android:text="0"
            android:textColor="#006400"
    
            />
        <Button
            android:id="@+id/buttonminus"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/TVcurrentnum"
            android:layout_centerInParent="true"
            android:background="#8b0000"
            android:text="-"
            android:textColor="#006400"
            android:textSize="@android:dimen/app_icon_size"
    
            />
    
        <TextView
            android:id="@+id/tvcounter"
            android:layout_width="wrap_content"
            android:layout_height="66dp"
            android:layout_below="@id/buttonrestart"
            android:layout_centerInParent="true"
            android:layout_marginBottom="300dp"
            android:background="#8b0000"
            android:text="counter"
            android:textAlignment="center"
            android:textColor="#006400"
            android:textStyle="bold|italic"
            />
    
        <Button
            android:id="@+id/buttoncheck"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/buttonminus"
            android:layout_centerHorizontal="true"
            android:layout_centerInParent="true"
            android:background="#8b0000"
            android:outlineSpotShadowColor="#008B02"
            android:text="Check"
            android:textColor="#006400"
            android:textStyle="bold|italic"
            />
        <Button
            android:id="@+id/buttonrestart"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/buttoncheck"
            android:layout_centerInParent="true"
            android:background="#8b0000"
            android:text="restart"
            android:textColor="#006400"
            android:textStyle="bold|italic"
    
            />
    
      </RelativeLayout>
    
      <!-- code from foundnm.xml-->
    
      <RelativeLayout
          android:id="@+id/grats"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:visibility="gone"
          >
    
        <TextView
            android:id="@+id/tvfound"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/buttonrestart1"
            android:layout_centerInParent="true"
            android:background="#8b0000"
            android:text="congrats"
            android:textColor="#006400"
            android:textStyle="bold|italic"
            />
    
    
        <Button
            android:id="@+id/buttonrestart1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:background="#8b0000"
            android:text="restart"
            android:textColor="#006400"
            android:textStyle="bold|italic"
    
            />
    
      </RelativeLayout>
    
    </RelativeLayout> 
    
    <RelativeLayout>
    
       <!--page relative layout-->  This is visible (visibilty = visible )
       <!--grats relative layout-->  This is invisible (visibility = gone)
        
    </RelativeLayout>
    
    public void changepage(){
    
            if (myC.ccheck() == "equal"){
                page.setVisibility(View.GONE);
                grats.setVisibility(View.VISIBLE);
            }
            else{
                grats.setVisibility(View.GONE);
                page.setVisibility(View.VISIBLE);
    
            }
        }