'2017/03/26'에 해당되는 글 2건

728x90

fragment란 activity안에 속해있는 화면으로 새로운 activity를 띄우는게 아니라,

하나의 activity에서 fragment만 바꿔가면서 보여주기 때문에

한 activity화면에서 여러개의 화면을 볼 수 있게 해주는 것이라고 할 수 있다.

 

https://developer.android.com/guide/components/fragments.html

 

본 예제는 두 개의 Fragment 를 생성하고 하나의 Fragment 만 Activity 상에 보이도록 할 것이다.
그리고, 액티비티의 버튼을 누르면 다른 Fragment 로 교체되도록 하는 내용에 대해서 적어둔다.

 

fragment_main.zip
다운로드

 

=== fragment01.xml ===

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/tv01"
        android:text="프레그먼트01 입니다"
        android:textSize="20dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/btn01"
        android:text="Fragment02 로 이동"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

 

=== fragment02.xml ===

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:background="#ff0"
    android:gravity="center"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/tv02"
        android:text="프레그먼트02 입니다"
        android:textSize="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/btn02"
        android:text="Fragment 01로 이동"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

 

=== activity_main.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:id="@+id/parentView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment
        android:id="@+id/frag01"
        android:name="com.tistory.link2me.fragment.Fragment01"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

 

=== Fragment01.java ===

package com.tistory.link2me.fragment;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

public class Fragment01 extends Fragment {

    public View onCreateView(LayoutInflater inflater, ViewGroup parentView, Bundle savedInstanceState){
        // 인플레이트(inflate)를 한다는 것은 동작 가능한 view 객체로 생성한다는 의미
        ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment01, parentView,false);

        Button btn = (Button) rootView.findViewById(R.id.btn01);
        btn.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View v) {
                MainActivity mainActivity = (MainActivity) getActivity();
                mainActivity.onFragmentChanged(0);
            }
        });

        return rootView;
    }
}

 

=== Fragment02.java ===

package com.tistory.link2me.fragment;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

public class Fragment02 extends Fragment {
    public View onCreateView(LayoutInflater inflater, ViewGroup parentView, Bundle savedInstanceState){

        ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment02, parentView,false);

        Button btn = (Button) rootView.findViewById(R.id.btn02);
        btn.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View v) {
                MainActivity mainActivity = (MainActivity) getActivity();
                mainActivity.onFragmentChanged(1);
            }
        });

        return rootView;
    }
}

 

=== MainActivity.java ===

package com.tistory.link2me.fragment;

import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    Fragment01 fragment01;
    Fragment02 fragment02;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 초기 지정은 frag01 로

        fragment01 = (Fragment01) getSupportFragmentManager().findFragmentById(R.id.frag01);
        fragment02 = new Fragment02();
    }

    public void onFragmentChanged(int index){
        if(index == 0){
            getSupportFragmentManager().beginTransaction().replace(R.id.parentView,fragment02).commit();
        } else if(index == 1){
            getSupportFragmentManager().beginTransaction().replace(R.id.parentView,fragment01).commit();
        }
    }
}

 

 

'안드로이드 > Layout' 카테고리의 다른 글

Android Fragment 기본 예제  (0) 2018.09.11
FloatingActionButton(FAB)  (0) 2018.08.15
LinearLayout weight  (0) 2018.03.01
Android ViewFlipper(뷰플리퍼)  (0) 2017.05.02
안드로이드 Layout  (0) 2016.07.23
블로그 이미지

Link2Me

,
728x90

Android Studio 상에서 프로젝트 이름(package name)을 변경하고 싶을 때가 있다.


왼쪽 프로젝트 탐색기에서 Android로 변경되어 있는지 확인



java 폴더 선택하여 그 하위에 있는 변경할패키지명을 선택한 후
Shift + F6(Refactor → rename)를 누른다






androidMainfest.xml에서 변경되어 있는지 확인


build.gradle 파일에서 applicationId를 변경할 패키지명으로 변경되었는지 확인


이렇게 하고 컴파일을 하면 패키지명이 변경되어 컴파일 된다.

하지만 물리적인 이름까지 변경되지는 않는다.


물리적인 이름까지 변경해서 테스트를 해보니 에러가 발생하고 제대로 동작이 안되는 거 같다.

그래서 딱 위 그림까지면 변경하면 생성되는 apk 파일명도 변경된다.

블로그 이미지

Link2Me

,