Result
Apply Intent to Code
1. Add a New Layout and a New Activity
2. Passing Data Between Activities
3. Start New Activity
activity_main.xml에 EditText와 Button을 추가하여 activity_child에 전달하기 위한 준비를 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?xml version="1.0" encoding="utf-8"?> <LinearLayout 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" android:orientation="vertical" tools:context=".MainActivity"> <EditText android:id="@+id/et_text_entry" android:layout_width="match_parent" android:layout_height="wrap_content"/> <Button android:id="@+id/b_do_something_cool" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="button"/> </LinearLayout> | cs |
activity_child.xml를 생성하여 activity_main에서 전달받은 값을 받을 TextView를 추가한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?xml version="1.0" encoding="utf-8"?> <FrameLayout 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=".ChildActivity"> <TextView android:id="@+id/tv_display" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="This is default text." android:textSize="30sp"/> </FrameLayout> | cs |
ChildActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | package com.tistory.qlyh8.intent1; /* * Created by YUNHEE on 2018-01-01. */ import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; public class ChildActivity extends AppCompatActivity { private TextView mDisplayText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_child); mDisplayText = findViewById(R.id.tv_display); //특정 액티비티를 시작한 인텐트를 제공한다. Intent intentThatStartedThisActivity = getIntent(); /* * 특정 액티비티를 시작하는 인텐트가 항상 있지만, * 받으려는 Extra가 잘 전달되었다고 보장 할 수는 없다. * 따라서 인텐트를 만들 때 지정한 Extra가 인텐트에 포함되어 있는지 확인해야 한다. * 이 액티비티가 다른 메소드에 의해 시작된 경우, 이 Extra는 인텐트에 존재하지 않을 수 있다. * */ if (intentThatStartedThisActivity.hasExtra(Intent.EXTRA_TEXT)) { //전달받은 값을 꺼낸다. String textEntered = intentThatStartedThisActivity.getStringExtra(Intent.EXTRA_TEXT); mDisplayText.setText(textEntered); } } } | cs |
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | package com.tistory.qlyh8.intent1; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends AppCompatActivity { private EditText mNameEntry; private Button mDoSomethingCoolButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mDoSomethingCoolButton = findViewById(R.id.b_do_something_cool); mNameEntry = findViewById(R.id.et_text_entry); mDoSomethingCoolButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //인텐트를 사용하면 새로운 액티비티가 사용할 정보를 전달할 수 있다. Intent startChildActivityIntent = new Intent(MainActivity.this, ChildActivity.class); //전달하고자 하는 데이터를 인텐트에 넣어준다. startChildActivityIntent.putExtra(Intent.EXTRA_TEXT, mNameEntry.getText().toString()); //두 액티비티 간의 이동을 하는 인텐트를 파라미터로 받는 메소드 startActivity(startChildActivityIntent); } }); } } | cs |
AndroidManifest.xml에 ChildActivity를 추가한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.tistory.qlyh8.intent1"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".ChildActivity"/> </application> </manifest> | cs |
Android Course of Udacity - Lesson 4
'Android' 카테고리의 다른 글
Preferences - (1) Data Persistence & Preference Fragment (0) | 2018.01.03 |
---|---|
Intent - (3) Implicit Intent를 코드에 적용하기 (0) | 2018.01.01 |
Intent - (1) Intent (0) | 2018.01.01 |
RecyclerView - (3) 코드에 적용하기 (0) | 2017.12.31 |
RecyclerView - (2) Adapter & Layout Manager (0) | 2017.12.30 |