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

안드로이드 이론 빡공 7

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

 

package com.threedpit.myinflater;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;

public class MenuActivity extends AppCompatActivity {
    LinearLayout container;

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

        container =findViewById(R.id.container);

        Button btn2 = findViewById(R.id.button2);
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                addLayout();
            }
        });
    }
    public void addLayout(){
        /**
         * 레이아웃 화면을 setContentView가 아니라
         * 직접 인플레이션 하기 위한 함수
         * */
        LayoutInflater inflater =(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
       /**
        * 인플레이터를 생성한것에
        * R.layout.sub1 이것을
        * container 에 true(넣어주라)라는 의미
        * */
        inflater.inflate(R.layout.sub1,container,true);
        Toast.makeText(this,"부분화면추가",Toast.LENGTH_LONG).show();
    }
}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MenuActivity">

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="부분 화면 레이어 추가" />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="부분 화면 추가하기" />

    <LinearLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"></LinearLayout>
</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MenuActivity">

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="부분 화면 레이어 추가" />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="부분 화면 추가하기" />

    <LinearLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"></LinearLayout>
</LinearLayout>

 

 

package com.threedpit.myintent;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

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

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);
                startActivityForResult(intent,101);
                /**
                 * 화면을 띄우고 거기에 대한 응답을
                 * 받고 싶은 경우에
                 * startActivityForResult(intent,101);
                 * 101은 어떤화면 으로 부터 왔는지 구분할수 있는 코드라고
                 * 요청 코드라고 합니다.
                 * */
            }
        });
    }
    /**이아래 메소드는
     * 메뉴엑티비티에서 메인 엑티비티로 돌아 왔을때 실행된다.*/
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
       /**resultCode 아까 메뉴 엑티비티부분에서 전달한 200 이 들어오는것
        * data는 보낸 데이터 3dpit이 전달이 된다.
        * */
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==101){/**이런식으로 어디서 왔는지 구분 가능*/
            if(data !=null){
                String name = data.getStringExtra("name");
                if(name!=null){
                    Toast.makeText(this,"응답으로 받은 데이터 : " + name,Toast.LENGTH_LONG).show();
                }
            }
        }
    }
}

 

<?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">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="메뉴화면 띄우기"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>		

package com.threedpit.myintent;

import androidx.appcompat.app.AppCompatActivity;

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

public class MenuActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu);
        Button btnBack = findViewById(R.id.btn_back);

        btnBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent intent = new Intent();
                /**데이터를 넣은것 put Extra로*/
                intent.putExtra("name","3dpit");
                /**돌아갈때 메인엑티비티에 전달됨\
                 * 또는 RESULT_OK 라고 해도된다.*/
                setResult(200,intent);
                finish();
            }
        });
    }
}

<?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=".MenuActivity">

    <Button
        android:id="@+id/btn_back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="돌아가기"
        tools:layout_editor_absoluteX="169dp"
        tools:layout_editor_absoluteY="348dp" />
</androidx.constraintlayout.widget.ConstraintLayout>

package com.threedpit.mycallintent;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
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 btn1 =  findViewById(R.id.button);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("tel:010-1234-5678"));
               /**
                * 직접 화명르 띄우는 것이 아니고 시스템적으로
                * 요청을 하게 되고, OS 안에 Activity 매니져라는게
                * 이것을 받게 된다.
                * 이전화 번호가 있으니 전화 걸기 원한다
                * 생각하고 단말의 전화 걸기앱이 실행된다.
                * */
                startActivity(intent);
            }
        });
    }
}

<?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">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="전화걸기"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

package com.threedpit.mycallintent;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
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 btn1 =  findViewById(R.id.button);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
               /** Component는 앱 구성요소*/

               /**
                * 쉽게 그냥하면되는데 왜 이렇게 하나?
                * menuActivity.class를 이전에는 적용했는데
                * 여기서는 문자열을 이용해서 적용하고 있다.
                * 이런 코드를 사용하는 경우가 있다.
                * 이런식으로 인텐트도 가능합니다.
                * */
               ComponentName name = new ComponentName("com.threedpit.mycallintent","com.threedpit.mycallintent.MenuActivity");
               intent.setComponent(name);
               startActivityForResult(intent,101);
            }
        });
    }
}

 

 

 

 

728x90
반응형

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

안드로이드 이론 빡공 9  (0) 2020.06.15
안드로이드 이론 빡공 8  (0) 2020.06.14
안드로이드 이론 빡공 6  (0) 2020.06.11
안드로이드 이론빡공 5  (0) 2020.06.10
안드로이드 이론빡공 4  (0) 2020.06.10

댓글