ExplicitIntent.zip


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

+ Recent posts