편집 기록

편집 기록
  • 프로필 한규창님의 편집
    날짜2020.01.04

    안드로이드 스튜디오 fragment 간의 화면 전환시 겹침 질문


    fragment1 에서 fragment2로 화면 전환을 구현했는데, 이전의 fragment1의 버튼이 그대로 남아서 fragment2의 텍스트와 겹쳐서 화면에 나타나더군요

    화면 겹침을 방지하기 위한 코드가 필요한데, 어떤 코드를 추가해야 하나요?

    MainActivity.java

    package com.example.fragment_page_switching_test;
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.fragment.app.Fragment;
    import androidx.fragment.app.FragmentManager;
    import androidx.fragment.app.FragmentTransaction;
    
    
    import android.os.Bundle;
    
        public class MainActivity extends AppCompatActivity {
    
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
    
    
                FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
                fragmentTransaction.replace(R.id.fragment,fragment1.newinstance()).commit();
    
            }
            public void replaceFragment(Fragment fragment){
                FragmentManager fragmentManager = getSupportFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.fragment,fragment).commit();
    
    
            }
    
    }
    

    fragment1.java

    package com.example.fragment_page_switching_test;
    
    
    import android.os.Bundle;
    
    import androidx.fragment.app.Fragment;
    
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;
    
    
    /**
     * A simple {@link Fragment} subclass.
     */
    public class fragment1 extends Fragment {
        public static fragment1 newinstance(){
            return  new fragment1();
        }
    
        public fragment1() {
            // Required empty public constructor
        }
    
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            View view = inflater.inflate(R.layout.fragment_fragment1,null);
            Button button1 = (Button)view.findViewById(R.id.button);
    
            button1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    ((MainActivity)getActivity()).replaceFragment(fragment2.newinstance());
                }
            });
    
    
            return view;
        }
    

    fragment2.java

    package com.example.fragment_page_switching_test;
    
    
    import android.os.Bundle;
    
    import androidx.fragment.app.Fragment;
    
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    
    /**
     * A simple {@link Fragment} subclass.
     */
    public class fragment2 extends Fragment {
    
        public static fragment2 newinstance(){
            return  new fragment2();
        }
    
        public fragment2() {
            // Required empty public constructor
        }
    
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            return inflater.inflate(R.layout.fragment_fragment2, container, false);
        }
    
    }
    

    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout 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">
    
        <fragment
            android:id="@+id/fragment"
            android:name="com.example.fragment_page_switching_test.fragment1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
    
            />
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    fragment_fragment1.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".fragment1">
    
        <!-- TODO: Update blank fragment layout -->
    
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button"
            />
    
    </RelativeLayout>
    

    fragment_fragment2

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".fragment2"
        android:background="#FF82FF">
    
        <!-- TODO: Update blank fragment layout -->
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="@string/hello_blank_fragment" />
    
    
    </RelativeLayout>
    
  • 프로필 nowp님의 편집
    날짜2020.01.04

    안드로이드 스튜디오 fragment 간의 화면 전환시 겹침 질문


    fragment1 에서 fragment2로 화면 전환을 구현했는데, 이전의 fragment1의 버튼이 그대로 남아서 fragment2의 텍스트와 겹쳐서 화면에 나타나더군요

    화면 겹침을 방지하기 위한 코드가 필요한데, 어떤 코드를 추가해야 하나요?

    MainActivity.java

    package com.example.fragment_page_switching_test;
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.fragment.app.Fragment;
    import androidx.fragment.app.FragmentManager;
    import androidx.fragment.app.FragmentTransaction;
    
    
    import android.os.Bundle;
    
        public class MainActivity extends AppCompatActivity {
    
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
    
    
                FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
                fragmentTransaction.replace(R.id.fragment,fragment1.newinstance()).commit();
    
            }
            public void replaceFragment(Fragment fragment){
                FragmentManager fragmentManager = getSupportFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.fragment,fragment).commit();
    
    
            }
    
    }
    

    fragment1.java

    package com.example.fragment_page_switching_test;
    
    
    import android.os.Bundle;
    
    import androidx.fragment.app.Fragment;
    
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;
    
    
    /**
     * A simple {@link Fragment} subclass.
     */
    public class fragment1 extends Fragment {
        public static fragment1 newinstance(){
            return  new fragment1();
        }
    
        public fragment1() {
            // Required empty public constructor
        }
    
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            View view = inflater.inflate(R.layout.fragment_fragment1,null);
            Button button1 = (Button)view.findViewById(R.id.button);
    
            button1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    ((MainActivity)getActivity()).replaceFragment(fragment2.newinstance());
                }
            });
    
    
            return view;
        }
    

    fragment2.java

    package com.example.fragment_page_switching_test;
    
    
    import android.os.Bundle;
    
    import androidx.fragment.app.Fragment;
    
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    
    /**
     * A simple {@link Fragment} subclass.
     */
    public class fragment2 extends Fragment {
    
        public static fragment2 newinstance(){
            return  new fragment2();
        }
    
        public fragment2() {
            // Required empty public constructor
        }
    
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            return inflater.inflate(R.layout.fragment_fragment2, container, false);
        }
    
    }
    

    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout 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">
    
        <fragment
            android:id="@+id/fragment"
            android:name="com.example.fragment_page_switching_test.fragment1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
    
            />
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    fragment_fragment1.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".fragment1">
    
        <!-- TODO: Update blank fragment layout -->
    
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button"
            />
    
    </RelativeLayout>
    

    fragment_fragment2

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".fragment2">
    
        <!-- TODO: Update blank fragment layout -->
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="@string/hello_blank_fragment" />
    
    </RelativeLayout>
    
  • 프로필 한규창님의 편집
    날짜2020.01.03

    안드로이드 스튜디오 fragment 간의 화면 전환시 겹침 질문


    fragment1 에서 fragment2로 화면 전환을 구현했는데, 이전의 fragment1의 버튼이 그대로 남아서 fragment2의 텍스트와 겹쳐서 화면에 나타나더군요

    화면 겹침을 방지하기 위한 코드가 필요한데, 어떤 코드를 추가해야 하나요?

    MainActivity.java

    package com.example.fragment_page_switching_test; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction;

    import android.os.Bundle;

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    
            FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
            fragmentTransaction.replace(R.id.fragment,fragment1.newinstance()).commit();
    
        }
        public void replaceFragment(Fragment fragment){
            FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.fragment,fragment).commit();
    
    
        }
    

    }

    fragment1.java

    package com.example.fragment_page_switching_test;

    import android.os.Bundle;

    import androidx.fragment.app.Fragment;

    import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button;

    /**

    • A simple {@link Fragment} subclass. */ public class fragment1 extends Fragment { public static fragment1 newinstance(){ return new fragment1(); }

      public fragment1() { // Required empty public constructor }

      @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_fragment1,null); Button button1 = (Button)view.findViewById(R.id.button);

      button1.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
              ((MainActivity)getActivity()).replaceFragment(fragment2.newinstance());
          }
      });
      
      return view;
      

      }

    fragment2.java

    package com.example.fragment_page_switching_test;

    import android.os.Bundle;

    import androidx.fragment.app.Fragment;

    import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup;

    /**

    • A simple {@link Fragment} subclass. */ public class fragment2 extends Fragment {

      public static fragment2 newinstance(){ return new fragment2(); }

      public fragment2() { // Required empty public constructor }

      @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_fragment2, container, false); }

    }

    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>

    <fragment
        android:id="@+id/fragment"
        android:name="com.example.fragment_page_switching_test.fragment1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
    
        />
    

    fragment_fragment1.xml <?xml version="1.0" encoding="utf-8"?>

    <!-- TODO: Update blank fragment layout -->
    
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        />
    

    fragment_fragment2

    <?xml version="1.0" encoding="utf-8"?>

    <!-- TODO: Update blank fragment layout -->
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/hello_blank_fragment" />