안드로이드 이론 빡공 8
본문 바로가기
안드로이드(Android)

안드로이드 이론 빡공 8

by KyeongMin 2020. 6. 14.
728x90
반응형

package com.threedpit.myparcelable;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn = findViewById(R.id.button);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getApplicationContext(),MenuActivity.class);
                SimpleData data = new SimpleData(101,"OK");
                intent.putExtra("data",data);
                startActivity(intent);
            }
        });

    }
}

package com.threedpit.myparcelable;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MenuActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu);
        Button btn2 = findViewById(R.id.button2);
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
        Intent intent = getIntent();
        processIntent(intent);
    }
    public void processIntent(Intent intent){
        if(intent !=null){
            /**intent.getExtras(); 이안의 번들 객체 참조하기 위한 */
            Bundle bundle = intent.getExtras();
           SimpleData data = bundle.getParcelable("data");
           if(data!=null){
               Toast.makeText(this,"전달받은 객체: "+data.code+", "+data.message,Toast.LENGTH_LONG).show();
           }
        }
    }
}

package com.threedpit.myparcelable;

import android.os.Parcel;
import android.os.Parcelable;

public class SimpleData implements Parcelable {
    /**
     * 메시지와 코드값을 넣기 위한 변수 생성
     * */
    int code;
    String message;

    public SimpleData(int code, String message){/**생성자 함수*/
        this.code= code;
        this.message=message;
    }
    public SimpleData(Parcel src){
        /**Parcel 안에 코드와 메시지가 있다고 전제하는것 */
        /**parcel에서 read 부분은
         * parcel 안에 있는 정보를 이용하여 Simple데이터를 만드는것 */

        code = src.readInt();
        message =src.readString();
    }
    /**Parcelable 형태로 만들기 위한 코드*/
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
        public SimpleData createFromParcel(Parcel in) {
            /**createFormParcel 이라는 SimpleData 객체를 만들 떄
             * Parcel 안에 있는것을 만들겟다.
             * */
            return new SimpleData(in);
        }
        public SimpleData[] newArray(int size) {
            return new SimpleData[size];
        }
    };

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        /**Simple 데이터를 이용해서 parcel에 쓰는 역활*/
        dest.writeInt(code);
        dest.writeString(message);
    }
}
/**Serializerable로 안하고 Parceable로 하는 이유는
 * Serializerable 안에 데이터가 어마어마하게 많은
 * parceable은 원하는 데이터만 보내기 위해 사용( 귀찬긴한 단점이있다)
 * */

728x90
반응형

'안드로이드(Android)' 카테고리의 다른 글

안드로이드 이론 빡공 10  (0) 2020.06.16
안드로이드 이론 빡공 9  (0) 2020.06.15
안드로이드 이론 빡공 7  (0) 2020.06.12
안드로이드 이론 빡공 6  (0) 2020.06.11
안드로이드 이론빡공 5  (0) 2020.06.10

댓글