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 |
댓글